Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2016, 17:44   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос Запрет ввода кириллицы и символов

Хочу разрешить вводить только латиницу и цифры
Код:
procedure TFormSigninSignup.ESingInLoginKeyPress(Sender: TObject;
  var Key: Char);
begin
  if not (AnsiChar(Key) in ['0'..'9', 'a'..'z', 'A'..'Z', Chr(8)]) then Key := #0;
end;
Прописную кириллицу пропускает, строчную нет.
Где дыра?
Shouldercannon вне форума Ответить с цитированием
Старый 17.05.2016, 17:56   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

простите, а зачем Вы делаете AnsiChar(Key) ?
просто Key разве не катит?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.05.2016, 18:07   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Юникод? А так
Код:
  if not (AnsiChar(Ansistring(Key)[1]) in ['0'..'9', 'a'..'z', 'A'..'Z', Chr(8)]) then Key := #0;
хотя перевод в анси может плохо закончиться. Лучше так
Код:
if Pos(Key,'строка допустимых символов')=0 then Key := #0;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 17.05.2016 в 18:57.
Аватар вне форума Ответить с цитированием
Старый 17.05.2016, 20:01   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
простите, а зачем Вы делаете AnsiChar(Key) ?
просто Key разве не катит?
Delphi XE выдаёт предупреждение
[dcc32 Warning]: W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
Цитата:
Сообщение от Аватар Посмотреть сообщение
Юникод? А так
Код:
  if not (AnsiChar(Ansistring(Key)[1]) in ['0'..'9', 'a'..'z', 'A'..'Z', Chr(8)]) then Key := #0;
хотя перевод в анси может плохо закончиться. Лучше так
Код:
if Pos(Key,'строка допустимых символов')=0 then Key := #0;
Оба варианта работают
Shouldercannon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет нажатия кнопки и запрет неправильного ввода данных De_Kurlzz Помощь студентам 1 15.06.2011 15:14
Определить, сколько символов кириллицы и латиницы присутствует строке.Строка задается с клавиатуры olhapupkin Помощь студентам 0 30.11.2010 20:10
запрет ввода символов в форму MiK_on JavaScript, Ajax 3 19.08.2010 08:37
Как сделать запрет ввода букв в поле для ввода input zvezda_t PHP 1 27.12.2009 22:02
Запрет ввода кирилических символов wnuks Microsoft Office Excel 1 12.07.2007 19:45