[identity profile] karakhan.livejournal.com posting in [community profile] useful_faq
Доброго времени суток всем.

Товарищи, нужна помощь по Delphi. Нужно сделать проверку вводимого в поле Edit, чтоб оно было строго числом (integer или real - не так уж принципиально). Самому фантазии не хватает, поиск же помогает мало: находится или откровенная чушь, или чересчур громоздкие, сложные и мне не понятные процедуры (а кроме как сделать, надо  еще понимать и уметь объяснить). В общем, чем проще, тем лучше.

В принципе, такое делать доводилось на учебе, но я потерял те записи, помню только общий принцип: введенное посимвольно сравнивается с набором из 9 цифр и запятой (вот только не помню, используется массив или case), и если один из введенных символов не соответствует, то выводится ошибка. Повторить сам не могу. =(
В общем, будет просто замечательно, если поможете воспроизвести именно этот способ. Но и за любой другое достаточно простое решение (хотя бы в общих чертах) буду весьма благодарен.

Хы

Date: 2008-05-28 04:56 pm (UTC)
From: [identity profile] novill.livejournal.com
try
strtoint(edit1.text)
except
showmessage('Это не число');
end;

Повесить этот блок в обраточик понравившеося события (например Onexit)


Re: Хы

Date: 2008-05-28 04:58 pm (UTC)
From: [identity profile] novill.livejournal.com
Если допустимо и вещественное то использовать strtofloat

еще есть функция trystrtofloat...

Ищщо вариант

Date: 2008-05-28 05:44 pm (UTC)
From: [identity profile] novill.livejournal.com
var i:integer;
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)
From: [identity profile] novill.livejournal.com
А, еще тут в начале на минус надо проверять

Date: 2008-05-28 05:44 pm (UTC)
From: [identity profile] catkeen.livejournal.com
У нас процедурка была написана, на подобии
CheckInt(TEdit,"сообщение с ошибкой"):Boolean;

если надо - скину.
Хотя кода который написал Novill будет вполне достаточно. :)

Date: 2008-05-28 09:45 pm (UTC)
From: [identity profile] guest-o.livejournal.com
Был жеж компонент типа MaskEdit. Там можно было маску задавать для вводимых значений.