Цитата:
Сообщение от Darken
Но, почему-то если ввести число 4, например - выдает ошибку, если 44 - тогда пишет, что целое...
|
В твоей процедуре сначала проверяется строка в Edit, а потом добавляется значение нажатой клавиши, т.е. если нажать 4 в пустом поле, то сначала провериться пустая строка (отсюда и "ошибка"), а потом добавиться "4". Чтобы этого избежать, необходимо "перенести" эту процедуру в события OnKeyUp, например так:
Код:
var
s: string;
i: Integer;
f: Double;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = '.' then Key := ',' //замена точки запятой
else
if not ( Key in [ '0'..'9' , '.' , #8 , #46 ] ) then Key := #0;
end;
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
s:= Edit1.Text; //проверка ввода
if TryStrToInt(s, i) then
begin
Label5.Caption:= s + ' Целое';
exit;
end;
if TryStrToFloat(s, f) then
begin
Label5.Caption:= s + ' Дробное';
exit;
end;
Label5.Caption:= s + ' Ошибка';
end;
Цитата:
Сообщение от Darken
И еще хотя это и не нужно в данном проекте, но если ввести число более 12 знаков - выдает, что оно дробное, почему?
|
превышен лимит Integer