TEdit и тип AnsiString
Такая ситуация. Необходимо реализовать проверку введенного юзером значения в поле компонента TEdit на форме. Для этого считывать каждый символ в строке и проверять, является ли он цифрой. В обратном случае выводится сообщение об ошибке. Собственно, есть только один вопрос: как узнать, что достигнут конец строки? В стандарных null-terminated строках строка заканчивается символом '\0', а вот как дела обстоят в типе AnsiString, для меня пока что загадка.
Да, еще: почему в AnsiString, когда необходимо обратиться к первому символу в строке, обращаются к элементу [1], а не [0], как везде в C++? Спасибо |
AnsiString - это притянутая за уши паскалевская строка (они начинаются с единицы). В конце есть '\0', в этом можно убедиться, посмотрев исходник AnsiString::c_str(); Таким образом, есть 2 варианта:
Код:
AnsiString str=Edit1->text; |
Цитата:
|
Нет. Размер строк AnsiString превышает 255
|
А если контролировать в процессе набора?
Прямо по событию нажатия клавиши. |
А можно просто после нажатия клавиши Enter или любой другой клавиши(впринципе, на любой Event) повесить => код
AnsiString t; t.ToInt() - вслучае нечислового значения функция выдаст ошибку => перед нами не число... вот такой "ламерский" спопосб... зато всего 2 строчки... |
Цитата:
Код:
TMyEdit::perform(TMessage& msg) |
Время: 06:51. |
Время: 06:51.
© OSzone.net 2001-