|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.06.2023, 21:30 | #1 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,646
|
Свойство MaxLength у TEdit и кодировка UTF8
Вот какая возникла проблема. Нужно ограничить количество символов, которые может ввести пользователь в TEdit. Для этого предназначено свойство MaxLength, но оно не понимает кодировку UTF8, а именно с ней и работает Lazarus (странно, да, работает с этой кодировкой, но свойства ее не понимают).
В итоге если, скажем, прописать MaxLength := 30, то длина строки будет ограничена лишь 15 символами для русского текста. Применил костыльное решение: 1. Установил MaxLength := 60, то есть в два раза больше, чем надо (но так оно пропустит более 30 нерусских символов). 2. На обработчик события KeyPress прописал следующее: Код:
Можно, конечно, еще дополнительно проверять длину текста и обрезать его, если окажется длиннее, но это уже двойной костыль будет. Есть ли нормальное решение проблемы? E-Mail: arigato.freelance@gmail.com
|
15.06.2023, 19:27 | #2 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,885
|
А пробовали уже OnChange вместо OnKeyPress с тем же самым кодом ?
|
15.06.2023, 21:44 | #3 |
Регистрация: 08.08.2014
Сообщений: 5
|
Верно про OnChange. Вот так можно:
Код:
По этому же принципу в OnChange можно делать ввод только числовых значений, с помощью TryStrToInt или TryStrToFloat, ну например. |
15.06.2023, 22:15 | #4 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,646
|
Ну это примерно такой же костыль. В случае ограничения свойством MaxLength и вставки из буфера обмена, вставленный текст просто обрезается. А в предложенном варианте вообще ничего не вставится. Ну и потеря позиции курсора.
В общем, пока нормального варианта нет, а штатный MaxLength, который обязан корректно работать, не работает в кривом Лазарусе, с помпой перешедшем на UTF8 (с такой помпой, что некоторый функции, типа AnsiToUtf8, которые раньше работали, тупо вообще больше ничего не делают). E-Mail: arigato.freelance@gmail.com
Последний раз редактировалось Arigato; 15.06.2023 в 22:18. |
15.06.2023, 22:28 | #5 |
Регистрация: 08.08.2014
Сообщений: 5
|
Так не пойдет?:
Код:
|
15.06.2023, 22:36 | #6 |
Регистрация: 08.08.2014
Сообщений: 5
|
|
16.06.2023, 01:06 | #7 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,646
|
E-Mail: arigato.freelance@gmail.com
|
16.06.2023, 04:03 | #8 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
Скачал последнюю версию (2.2.6), вроде корректно работает MaxLength.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
16.06.2023, 13:26 | #9 |
Форумчанин
Регистрация: 07.11.2011
Сообщений: 164
|
|
16.06.2023, 19:22 | #10 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,646
|
Спасибо, попробую обновиться. Так-то Лазарус запускаю раз в пятилетку, потому какой стоит, такой стоит...
P.S. Обновление до версии 2.2.6 решило проблему, действительно MaxLength корректно работает с кодировкой UTF8. E-Mail: arigato.freelance@gmail.com
Последний раз редактировалось Arigato; 16.06.2023 в 19:41. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кодировка в utf8 | dmitruyk | Python | 3 | 09.04.2018 14:10 |
UTF8 | renigal1 | PHP | 4 | 23.03.2012 12:32 |
Кодировка utf8. Работа с символами. Перевод русских букв в латинских аналог | dr.Chas | PHP | 3 | 24.03.2011 16:47 |
TWebBrowser и кодировка UTF8.. | sxcine | Работа с сетью в Delphi | 2 | 04.11.2010 22:55 |
Кодировка с cp1251 на utf8 в MySQL | Droid | БД в Delphi | 1 | 13.03.2010 16:43 |