Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/76: Рейтинг темы: голосов - 76, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 01.07.2010
Сообщений: 21

проверка на символы...

19.07.2010, 11:03. Показов 14501. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
мне нужно сделать так чтобы в эдите могли находиться только определенные символы, типа латиница, нижнее подчеркивание.

пробовал два варианта... но оба у меня вызывают ошибку range check error во время работы проги.

вариант 1)
C++
1
2
3
4
5
if (Edit6->Text !=("q")||("w")||("8")||("9")||("0") )
{ShowMessage ("Некорректные символы.");
Edit6->Text="";
Edit6->SetFocus();}
else
в дальнейшем if повторяется несколько раз, т.к. проверить нужно еще 6 эдитов.

вариант 2)

C++
1
2
3
4
5
for(f=0; f<StrToInt(Edit6->Text.Length()); f++)
if (e2[f]>=65&&e2[f]<=90||e2[f]>=97&&e2[f]<=122||e2[f]==StrToInt('_'))
{ Edit6->Text="";
Edit6->SetFocus(); }
else {("Некорректные символы."); }
так же пробовал подпихнуть в первый вариант цикл for
C++
1
2
3
4
5
6
7
e2=Edit6->Text; 
for(f=0; f<StrToInt(Edit6->Text.Length()); f++)
if (e2[f] !=("q")||("w")||("8")||("9")||("0") )
{ShowMessage ("Некорректные символы.");
Edit6->Text="";
Edit6->SetFocus();}
else
результатов тоже не особо....
поможите разобраться плз...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.07.2010, 11:03
Ответы с готовыми решениями:

Проверка на символы в программе
Не удаётся сделать проверку в программе на символы и не отображаются русские буквы //программа сумматор //подключаем основные...

проверка переменной на символы
передается адресная строка типа .html (например 1.html) как сделать проверку на корректность формата пременной?

Проверка на повторяющиеся символы
Необходимо пройтись по строке, допустим &quot;aabbccdeeff gghhijjkk&quot; и удалить повторяющиеся эл-ты. Т.е. на выходе останется только &quot;d...

4
 Аватар для fantaz1
33 / 25 / 7
Регистрация: 08.11.2008
Сообщений: 107
19.07.2010, 11:19
Ток глянул на код вижу сразу ошибку в постановке условий:
C++
1
Edit6->Text !=("q")||("w")||("8")||("9")||("0")
нельзя так проверять..
вот правильная постановка условия, эт то как ты хотел сделать:
C++
1
Edit6->Text !=("q")||Edit6->Text !=("w")||Edit6->Text !=("8")||Edit6->Text !=("9")||Edit6->Text !=("0")
но это не правильный алгоритм для решения твоей задачи...) это я дал пример, что б ты правильно умел ставить условия.
Надо проверять по одному символу:
C++
1
Edit6->Text[i] >= 'a' && Edit6->Text[i] <= 'z'
как то так пробуй
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
19.07.2010, 12:17
Если использовать строки C++, то можно это сделать в виде функции
C++
1
2
3
4
5
6
bool isValid(const std::string& input, //Строка, которую нужно проверить
             const std::string& filter //Строка, содержащая допустимые символы
            )
{
    return (input.find_first_not_of(filter) == std::string::npos) ? true : false;
}
1
0 / 0 / 0
Регистрация: 01.07.2010
Сообщений: 21
19.07.2010, 15:24  [ТС]
итак.. заработало...
выглядит вот так вот:

C++
1
2
3
4
5
           for(int f=1; f <= StrToInt(e1.Length()); f++){
       if( (e1[f]<'0')||(e1[f]>'9')&&(e1[f]!='_') )
       {Edit1->SetFocus();
       ShowMessage ("Некорректные символы в номере столбца.Вводите только цифры,вместо пробела вводится нижняя черта.");
       break; }
трудность теперь в следующем:
break он прекращает действия оператора, и передает действие на оператор, следующий за законченным, то биш на for получается что break бесполезен и прога многократно выводит предупреждение замес одного... как эт поправить?
0
 Аватар для besstiaa
94 / 94 / 14
Регистрация: 04.06.2010
Сообщений: 223
19.07.2010, 16:19
Предложу вариант, который увидела недавно в книге Н.Культина. Здесь в частности в поле Edit1 можно вводить только цифры, знак разделения целой и дробной части числа, использовать клавиши Enter и Backspace. Никакого сообщения не выводится, что данный символ нельзя ввести, он просто не отображается. Но в любом случае переделать под себя легко. Возможно не лучший вариант. Если кто расскажет, почему, тоже будет полезно. Спасибо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void fastcall TForml::Edit1KeyPress(TObject *Sender, char &Key)
{
// код запрещенного символа заменим нулем, в результате
// символ в поле редактирования не появится
// Key - код нажатой клавиши
// проверим, является ли символ допустимым
if ((Key >= '0') && (Key <= '9')) //цифра
return;
// глобальная переменная DecimalSeparator
// содержит символ, используемый в качестве разделителя
// при записи дробных чисел
if (Key == DecimalSeparator)
{
if ((Editl->Text).Pos(DecimalSeparator) != 0)
Key = 0; // разделитель уже введен
return;
}
 
if (Key == VK_BACK) // клавиша <Backspace>
return;
 
if (Key == VK_RETURN) // клавиша <Enter>
{
Edit2->SetFocus();
return;
}
 
// остальные клавший запрещены
Key = 0 ; // не отображать символ
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.07.2010, 16:19
Помогаю со студенческими работами здесь

Проверка на символы (_!"№;%:?*)
Доброе время, кто может подсказать метод для проверки строки на символы (_!&quot;№;%:?*). А то подобный способ...

Проверка на символы в ms sql
Есть процедура: ALTER Procedure . @GuildName varchar(8), @MasterName varchar(10) AS BEGIN DECLARE @ErrorCode int ...

Проверка на вводимые символы
Как грамотно сделать проверку на вводимые символы? Чтобы при вводе в имя можно было вводить только буквы с фамилией то же самое. А вот с...

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

проверка на ненужные символы
проверка типа в данном случае не проходит так как могут присутствовать буквы других языков ,так что нужно чтобы скрипт проверял именно на...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД 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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru