Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/34: Рейтинг темы: голосов - 34, средняя оценка - 4.94
2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 444

Проверка текста на допустимые символы

08.07.2015, 19:17. Показов 6955. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Вот надо сделать проверку текста (логин) на допустимые символы.
Нужные символы задал так:
Delphi
1
2
3
4
var
s: Ansistring = 'nord76';
...
if not CharInSet(s[i],['А'..'Я', 'а'..'я', 'A'..'Z', 'a'..'z', '0'..'9', '_', '.', '-', ' ']) then ShowMessage('Неправильный логин');
Как мне сделать проверку, что если введены какие-нибудь символы ('_', '.', '-', ' ') но нет букв любого алфавита(рус. или англ.), то тоже выдать сообщение о неправильном логине?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.07.2015, 19:17
Ответы с готовыми решениями:

Проверка содержимого StringGrid.Cells на допустимые символы
Собственно проблема в следующем - нужно организовать проверку содержимого StringGrid.Cells на предмет того, что допустимые символы - только...

Установить разные допустимые символы в StringGrid по столбцам
По мере заполнения StringGrid’а добавляются строчки, но нужно сделать так,чтобы в 1-ом столбце было 3 цифри латинские, во втором до 20...

Проверка на допустимые символы
Понимаю, что затёртая тема и куча инфы в инете, но не могу на свой пример интерпретировать их, подскажите как правильно сделать? if...

11
96 / 84 / 49
Регистрация: 17.09.2014
Сообщений: 670
08.07.2015, 19:29
Cannon1, как один из вариантов...
Delphi
1
2
3
4
5
6
7
8
9
    ok:=false;
    s:='MyLogin';
    for i:=1 to length(s) do
    if s[i] in ['А'..'Я', 'а'..'я', 'A'..'Z', 'a'..'z'] then
    begin
       ok:=true;
       break;
    end;
    if not ok then ShowMessage('Неправильный логин');
1
2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 444
08.07.2015, 19:44  [ТС]
Спасибо, приблизительно работает, только немного не точно. Если я первым символом захочу поставить например "-" а потом буквы, то выдаёт неправильный ник.
Подправьте пожалуйста.
Ещё бы упростить как-нибудь.

Добавлено через 3 минуты
Ой, прошу прощения, вроде работает правильно, упростить если только.
Я "if not ok then ShowMessage('Неправильный логин');" в цикле случайно прописал.
0
96 / 84 / 49
Регистрация: 17.09.2014
Сообщений: 670
08.07.2015, 19:48
Cannon1, я так понимаю логин вводится с клавы...и в поле Edit...можно ограничить ввод недопустимых символов в обработке Edit1KeyPress. Код поиска букв в логине забить в отдельную функцию.
0
2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 444
08.07.2015, 19:49  [ТС]
Нет, у меня с клиента на сервер приходит в тхт переменной логин, никаких едитов.
Точнее в клиенте едит на граф. движке рисованный, а не компонент, там нет этих свойств.
0
96 / 84 / 49
Регистрация: 17.09.2014
Сообщений: 670
08.07.2015, 19:57
Cannon1, Тогда просто оформить проверку как отдельную функцию, можно запихнуть в другой модуль, чтобы не загромождала основной код.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
const str=['А'..'Я', 'а'..'я', 'A'..'Z', 'a'..'z'];
function CheckLogin(s:string):boolean;
var i:integer;
begin
    Result:=false;
    for i:=1 to length(s) do
       if CharInSet(s[i],str) then
       begin
           Result:=true;
           Exit;
      end;
end;
1
2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 444
08.07.2015, 20:14  [ТС]
Продолжу вопрос с символами:

Подскажите пожалуйста, как найти в тексте, если есть два символа подряд из указанных('_', '.', '-', ' '),
то вывести ShowMessage('Неправильный логин') ?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
08.07.2015, 20:22
Delphi
1
2
3
4
5
6
7
m:=['_', '.', '-', ' '];
k:=0;
i:=1;
while(i<length(text))and(k=0) do
if (s[i] in m)and(s[i+1]in m) then k:=1
else inc(i);
if k=0 then ....
1
2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 444
08.07.2015, 20:34  [ТС]
Что-то не так немного работает.
Во первых работает если сделать if k<>0 then ShowMessage('Неправильный логин') ;
А во вторых проверяет только первый символ из множества, тоесть "_" .
Если первым сделать один символ "-", то пишет неправильный ник, хотя должен быть нормальным.

Вот этот ник проходит- _NIck, а вот такой уже не пропускает- -NIck .
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
08.07.2015, 20:38
Какую-то хрень пишешь.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
var m:set of char;
    text:string;
    i,k:integer;
begin
.....................
m:=['_', '.', '-', ' '];
k:=0;
i:=1;
while(i<length(text))and(k=0) do
if (s[i] in m)and(s[i+1]in m) then k:=1
else inc(i);
if k=0 then  ShowMessage('Правильный логин')
else  ShowMessage('Неправильный логин') ;
1
2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 444
08.07.2015, 21:00  [ТС]
Спасибо, вроде работает.
Вместо text - s надо только. По скольку s у меня глобальная, то text:string; вообще не надо.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
08.07.2015, 21:02
Цитата Сообщение от Cannon1 Посмотреть сообщение
Вместо text - s надо только.
Да хоть папу римского...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.07.2015, 21:02
Помогаю со студенческими работами здесь

Проверка: содержит ли строка допустимые символы?
Добрый день. Строка вводиться пользователем. В сроке допустимы следующие символы - от 0 до 9 и .(точка). Такой вариант работает ...

Регулярное выражение для проверки текста на допустимые символы
Доброго времени суток. прошу помощи составить следующее регулярное выражение: разрешены любые русские и английские буквы, а так же...

Допустимые символы в description
Допустимо ли в description использовать кавычки и скобки? Не отсекаются ли они при выдаче? Тоже самое интересует и про title

Допустимые символы в TextBox
Как сделать, чтобы в текстбокс можно было вводить только буквы? Добавлено через 25 минут Как сделать проверку строки только на...

Допустимые символы в title, description
Что то я не могу найти. Какие символы могут быть в этих тегах, ну и в общем в head. Там еще keywords и прочее. Я думаю слова, ну еще ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru