singlepost

Хочу создать обработчик о предупреждений некорректного ввода «часов» << На главную или назад  

Хочу создать обработчик о предупреждений некорректного ввода «часов» и «мин». Но набираю в место 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

2 ответов в теме “Хочу создать обработчик о предупреждений некорректного ввода «часов»”

  1. 2
    Алексей Порынов ответил:

    не хрена не пашет..а если и пашет..очень не коректно
    может типа так?
    ($R *.dfm}
    { Во время создания формы свойству Visible компонента
    Label3 надо присвоить значение False )
    var
    // интервал
    rain: integer; // минут
    sec: integer; // секунд
    // в заголовок окна программы
    // выводится, сколько времени осталось
    procedure ShowTime;
    var
    buf: string[20];
    begin
    // минуты и секунды выводим двумя цифрами
    if min < 10 then
    buf := '0' + IntToStr(min) + ':'
    else ,
    buf := IntToStr(min) + ':';
    if sec < 10 then
    buf := buf + '0' + IntToStr(sec)
    else
    buf := buf + IntToStr(sec);
    Forml.Label3.Caption := buf;
    end;
    // сигнал от таймера
    procedure TForml.TimerlTimer(Sender: TObject);
    begin
    sec := sec — 1;
    ShowTime; // показать, сколько времени осталось
    if (min = 0) and (sec = 0) then
    // заданный интервал истек
    begin
    Timerl.Enabled := False; // стоп
    ShowMessage('Заданный интервал истек!');
    Buttonl.Caption := 'Пуск';
    Label3.Visible := False; // скрыть индикацию времени
    // сделать видимыми поля ввода интервала
    Labell.Visible := True;
    Editl.Visible := True;
    Label2.Visible := True;
    Edit2.Visible := True;
    exit;
    end;
    if (sec = 0) and (min > 0) then
    begin
    sec : = 60;
    min := min — 1;
    end;
    end;
    // щелчок на кнопке Пуск/Стоп
    procedure TForml.Buttoniciick(Sender: TObject);
    begin
    if Forml.Timer1.Enabled then
    // таймер работает, надо остановить
    begin
    Timer1.Enabled := False; // стоп
    Buttonl.Caption := 'Пуск';
    Label3.Visible := False; // скрыть индикацию времени
    // сделать видимыми поля ввода интервала
    Labell.Visible := True;
    Editl.Visible := True;
    Label2.Visible := True;
    Edit2.Visible := True;
    end
    else
    // таймер стоит, надо запустить
    begin
    min := StrToInt(Editl.Text);
    sec := StrToInt(Edit2.Text);
    if (sec = 0) and (min = 0) then
    begin
    ShowMessage('Надо задать интервал!');
    exit;
    end;
    Timerl.Enabled
    // скрыть поля ввода интервала
    Label1.Visible
    Editl.Visible
    Label2.Visible
    Edit2.Visible
    Label3.Visible
    = True; // запустить таймер
    = False;
    = False;
    = False;
    = False;
    = True;
    Buttonl.Caption := 'Стоп';
    ShowTime;
    end;
    end;

  2. 1
    Евгений Полушкин ответил:

    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 (strtoint(Edit2.Text) > 60) then
    Edit2.Text:='Ошибка ввода!';

    if flag = true then
    begin

    не компилировал, но должно работать

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.