![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,735
|
![]()
Вот какая возникла проблема. Нужно ограничить количество символов, которые может ввести пользователь в TEdit. Для этого предназначено свойство MaxLength, но оно не понимает кодировку UTF8, а именно с ней и работает Lazarus (странно, да, работает с этой кодировкой, но свойства ее не понимают).
В итоге если, скажем, прописать MaxLength := 30, то длина строки будет ограничена лишь 15 символами для русского текста. Применил костыльное решение: 1. Установил MaxLength := 60, то есть в два раза больше, чем надо (но так оно пропустит более 30 нерусских символов). 2. На обработчик события KeyPress прописал следующее: Код:
Можно, конечно, еще дополнительно проверять длину текста и обрезать его, если окажется длиннее, но это уже двойной костыль будет. Есть ли нормальное решение проблемы? ![]() E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#2 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,889
|
![]()
А пробовали уже OnChange вместо OnKeyPress с тем же самым кодом ?
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 08.08.2014
Сообщений: 5
|
![]()
Верно про OnChange. Вот так можно:
Код:
По этому же принципу в OnChange можно делать ввод только числовых значений, с помощью TryStrToInt или TryStrToFloat, ну например. |
![]() |
![]() |
![]() |
#4 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,735
|
![]()
Ну это примерно такой же костыль. В случае ограничения свойством MaxLength и вставки из буфера обмена, вставленный текст просто обрезается. А в предложенном варианте вообще ничего не вставится. Ну и потеря позиции курсора.
В общем, пока нормального варианта нет, а штатный MaxLength, который обязан корректно работать, не работает в кривом Лазарусе, с помпой перешедшем на UTF8 (с такой помпой, что некоторый функции, типа AnsiToUtf8, которые раньше работали, тупо вообще больше ничего не делают). E-Mail: arigato.freelance@gmail.com
Последний раз редактировалось Arigato; 15.06.2023 в 22:18. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 08.08.2014
Сообщений: 5
|
![]()
Так не пойдет?:
Код:
|
![]() |
![]() |
![]() |
#6 |
Регистрация: 08.08.2014
Сообщений: 5
|
![]() |
![]() |
![]() |
![]() |
#7 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,735
|
![]() E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#8 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,402
|
![]()
Скачал последнюю версию (2.2.6), вроде корректно работает MaxLength.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 07.11.2011
Сообщений: 175
|
![]() |
![]() |
![]() |
![]() |
#10 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,735
|
![]()
Спасибо, попробую обновиться. Так-то Лазарус запускаю раз в пятилетку, потому какой стоит, такой стоит...
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 |