Подскажите плиз - в общем програмка проста как 5 копеек - запускаем - появляется окошко - в это окошко вводим циферку - жмакаем интер - програмка внутри по 2ум формулкам считает и во второе окошко выводит ответ.
вопрос в следующем - как сделать проверку ввода символов ? - ну всмысле вот если я вместо циферки букву введу чтоб прога высвечивала окошечко с надписью ругательной (формулировку чтоб можно было придумать самому) ?
вроде просто а как сделать не знаю
подскажите плиз...
лесоруб 08:16 28.02.2008
Ой, я забыл уже немного, но смысл такой:
Я так думаю, что процедура у вас такая же: procedure TForm1.StrInputKeyPress(Sender: TObject; var Key: Char); (дальнейшее верно для неё)
n:=['0'..'9','-','+']; // мно-во элементов, которые может содержать TEdit
s:='';
if not(key in n) then key:=#0 // если элемент не принадлежит множеству ничего не печатать
Только если хотите, чтобы ругалась программа добавьте ShowMessage('Введённый символ не цифра').
APXU 08:24 28.02.2008
лесоруб, пасиба за оперативность - попробую !
mikе 08:59 28.02.2008
APXU, есть процедура val. но это будет проверка постфактум, т.е. сначала что-то ввёл, потом проверил и если введено не число, то ругнулся.
ЗЫ
А ещё в дельфях есть компонент MaskEdit
AIM-9M 09:38 28.02.2008
TryStrToInt
xxx-men 09:39 28.02.2008
Сообщение от mikе:
MaskEdit
ага, эт даже лучше, тока он какойта не гламурный
APXU 11:42 28.02.2008
народ народ ! я же не сказал что я супер мега чайник в дельфях...
вы тут мне маск едиты и т.д. и т.п....
AIM-9M, можно по подробнее mikе, тоже плиз
напишите как в первом посте - что надо ввести в текст проги ?:
Pengvin 17:07 28.02.2008
Способ основанный на проверке номера символа в ascii таблице. Насколько я помню первая половина таблицы неизменна для всех кодировок. В ней цифры идут с 30h по 39h. В реалиях дельфи этот код будет выглядеть вот так:
function IsNumber(c : char) : boolean
begin
if (ord(c)>=48) and (ord(c)<=57) then IsNumber:=true else IsNumber:=false;
end;
Главное - способ независим от языка и можно реализовать хоть на асме.
Nvetal 18:39 28.02.2008
Ну примерно так
....
try
a:=StrToFloat(Edit1.Text);
Except
ShowMessage('Че за нафик?');
end;
....
APXU 09:55 29.02.2008
Pengvin, Nvetal, седня попробую ! пасибо народ !
AIM-9M 12:33 29.02.2008
APXU, в справке все подробно описано, как работает эта функция. Остальное полный бред, разве что метод лесоруба подходит, если у тебя не только цифры могут быть.
legolas-dng 23:29 03.03.2008
APXU, поучи множества, основы всетаки, пригодится, с помошью них в два счета подобные вещи делаются.