|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » TEdit и тип AnsiString |
|
TEdit и тип AnsiString
|
Пользователь Сообщения: 86 |
Профиль | Отправить PM | Цитировать Такая ситуация. Необходимо реализовать проверку введенного юзером значения в поле компонента TEdit на форме. Для этого считывать каждый символ в строке и проверять, является ли он цифрой. В обратном случае выводится сообщение об ошибке. Собственно, есть только один вопрос: как узнать, что достигнут конец строки? В стандарных null-terminated строках строка заканчивается символом '\0', а вот как дела обстоят в типе AnsiString, для меня пока что загадка.
Да, еще: почему в AnsiString, когда необходимо обратиться к первому символу в строке, обращаются к элементу [1], а не [0], как везде в C++? Спасибо |
|
Отправлено: 00:31, 31-01-2006 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать AnsiString - это притянутая за уши паскалевская строка (они начинаются с единицы). В конце есть '\0', в этом можно убедиться, посмотрев исходник AnsiString::c_str(); Таким образом, есть 2 варианта:
AnsiString str=Edit1->text; // паскалевский или C++ вариант: unsigned a=1, b=str.length(); for(; a<=b && isdigit(str[a]); ++a) {} if (a<=b) throw Exception("error: invalid user with curly hands"); // вариант C: char* base=str.c_str(); while(*base && isdigit(*base++)) {} if (*base) throw Exception("error: invalid user with curly hands"); |
Отправлено: 12:16, 31-01-2006 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 401
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
------- Отправлено: 13:31, 31-01-2006 | #3 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Нет. Размер строк AnsiString превышает 255
|
Отправлено: 14:20, 02-02-2006 | #4 |
Пользователь Сообщения: 73
|
Профиль | Отправить PM | Цитировать А если контролировать в процессе набора?
Прямо по событию нажатия клавиши. |
|
Отправлено: 01:37, 03-02-2006 | #5 |
Ветеран Сообщения: 878
|
Профиль | Сайт | Отправить PM | Цитировать А можно просто после нажатия клавиши Enter или любой другой клавиши(впринципе, на любой Event) повесить => код
AnsiString t; t.ToInt() - вслучае нечислового значения функция выдаст ошибку => перед нами не число... вот такой "ламерский" спопосб... зато всего 2 строчки... |
Отправлено: 01:46, 03-02-2006 | #6 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать |
Отправлено: 12:34, 15-02-2006 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Java - Тип RECORD | ManHack | Программирование и базы данных | 9 | 01-10-2009 21:55 | |
C/C++ - [решено] int в AnsiString | crashtuak | Программирование и базы данных | 7 | 30-03-2009 02:11 | |
Разное - Неизвестный тип файла | roniro | Microsoft Windows 2000/XP | 6 | 06-07-2008 01:00 | |
C/C++ - [решено] Проблема с перекодировкой AnsiString in CHAR | vetal_dnepr | Программирование и базы данных | 5 | 23-04-2008 11:05 | |
тип сервера? | modem | Хочу все знать | 1 | 02-03-2003 05:49 |
|