Хочу создать обработчик о пердупреждении некорректного ввода «часов» и «мин». Но набираю в место 60 мин..78 мин..и сообщения не выходит о «некорректном воде числа» В чем тут ошибка?
procedure TForm1.Button1Click(Sender: TObject);
begin
flag:= true;
i:= 1;
while Ord(Edit1.Text[i])<>0 do
begin
if((Ord(Edit1.Text[i]) < 48) or (Ord(Edit1.Text[i]) > 57)) then
begin
flag:=false;
Edit1.Text:='Ошибка ввода!';
break;
end;
inc(i);
end;
i:=1;
while Ord(Edit2.Text[i])<>0 do
begin
if((Ord(Edit2.Text[i]) < 48) or (Ord(Edit2.Text[i]) > 57)) then
begin
flag:=false;
Edit2.Text:='Ошибка ввода!';
break;
end;
inc(i);
end;
if flag = true then
begin
21 февраля 2010 в 23:04
ну так ето будет фишка твоей програми)
21 февраля 2010 в 21:05
Это таймер на выкл. Компа по истечении времени. По кнопке запуск…время отсчитывается назад. Разумеется. То время которое ввел. Все работает. Но некорректность не видит. Например если я ввиду 1 ч 78 мин..оно отсчитывает..как 2ч 18 мин…
21 февраля 2010 в 21:02
Ну… StrToInt('123456789123456789123456789') ни к чему хорошему не приведет.
Или, например, StrToInt('-1')
21 февраля 2010 в 21:01
Я вижу проверки на то, что в едитах – числа. Все. Что должно проверять сами числа?
21 февраля 2010 в 21:01
function TForm1.CheckEdit(Edit:TEdit):boolean;
var
i,l:longint;
begin
CheckEdit:=false;
l:=length(Edit.Text);
if l>2
then exit;
for i:=1 to l do
if not (Edit.Text[i]in['0'..'9'])
then exit;
val(Edit.Text,i,l);
if not (i in [0..59])
then exit;
CheckEdit:=true;
end;
21 февраля 2010 в 21:01
flag:=true;
if Edit1.Text<>"" then
begin
if StrToInt(Edit.Text)>60
begin
ShowMessage("Неправильно введены часы");
flag:=false;
end;
if StrToInt(Edit2.Text)>24 then
begin
ShowMess…
flag:=false;
end;
If flag<>false savetime;
end;
Вот как-то так бы сделал я.