Сессия продолжается. Delphi.
May. 28th, 2008 08:38 pm![[identity profile]](https://www.dreamwidth.org/img/silk/identity/openid.png)
![[community profile]](https://www.dreamwidth.org/img/silk/identity/community.png)
Доброго времени суток всем.
Товарищи, нужна помощь по Delphi. Нужно сделать проверку вводимого в поле Edit, чтоб оно было строго числом (integer или real - не так уж принципиально). Самому фантазии не хватает, поиск же помогает мало: находится или откровенная чушь, или чересчур громоздкие, сложные и мне не понятные процедуры (а кроме как сделать, надо еще понимать и уметь объяснить). В общем, чем проще, тем лучше.
В принципе, такое делать доводилось на учебе, но я потерял те записи, помню только общий принцип: введенное посимвольно сравнивается с набором из 9 цифр и запятой (вот только не помню, используется массив или case), и если один из введенных символов не соответствует, то выводится ошибка. Повторить сам не могу. =(
В общем, будет просто замечательно, если поможете воспроизвести именно этот способ. Но и за любой другое достаточно простое решение (хотя бы в общих чертах) буду весьма благодарен.
Товарищи, нужна помощь по Delphi. Нужно сделать проверку вводимого в поле Edit, чтоб оно было строго числом (integer или real - не так уж принципиально). Самому фантазии не хватает, поиск же помогает мало: находится или откровенная чушь, или чересчур громоздкие, сложные и мне не понятные процедуры (а кроме как сделать, надо еще понимать и уметь объяснить). В общем, чем проще, тем лучше.
В принципе, такое делать доводилось на учебе, но я потерял те записи, помню только общий принцип: введенное посимвольно сравнивается с набором из 9 цифр и запятой (вот только не помню, используется массив или case), и если один из введенных символов не соответствует, то выводится ошибка. Повторить сам не могу. =(
В общем, будет просто замечательно, если поможете воспроизвести именно этот способ. Но и за любой другое достаточно простое решение (хотя бы в общих чертах) буду весьма благодарен.
Хы
Date: 2008-05-28 04:56 pm (UTC)strtoint(edit1.text)
except
showmessage('Это не число');
end;
Повесить этот блок в обраточик понравившеося события (например Onexit)
Re: Хы
Date: 2008-05-28 04:58 pm (UTC)еще есть функция trystrtofloat...
Хы- Хы
Date: 2008-05-28 05:32 pm (UTC)Ищщо вариант
Date: 2008-05-28 05:44 pm (UTC)dot:boolean;
begin
dot:=false;
for i:=0 to length(edit1.text) do
if not edit1.text[i] in ['0'...'9']
then if (not dot) and edit1.text[i]=',' {вместо запятой можно применить константу Decimalseparator, будет вам уважуха от предпода}
then dot:=true
esle Showmessage('Это не число');
* Делфей под рукой нет, пищу по нетрезвой памяти.
Re: Ищщо вариант
Date: 2008-05-28 05:45 pm (UTC)no subject
Date: 2008-05-28 05:44 pm (UTC)CheckInt(TEdit,"сообщение с ошибкой"):Boolean;
если надо - скину.
Хотя кода который написал Novill будет вполне достаточно. :)
no subject
Date: 2008-05-28 09:45 pm (UTC)