Вниз
Скачать: CL | DM;

try..except   Найти похожие ветки 

 
Nemeziz   (2008-02-07 20:51) [0]

Народ, Несколько дней назад начал програмить на Delphi. И вот возникла какая проблема. Как обработать ввод в edit (допускается ввод только числовых данных). Делаю вот так как описал ниже, но вылетает сообщение типа: данные должны быть целого типа. Можно сделать через OnKeyPress, но в данном случае необходимо сделать через try...except.

procedure TForm.btn_TestClick(Sender: TObject);
var
 PosX, PosY, Res: Integer;
begin
  PosX := Mouse.CursorPos.X;
  PosY := StrToInt(edt_PosY.Text);
  try
    Res := MulDiv(PosX, PosY, 100);
  except
    on EConvertError do
      Exit;
  end;
end;


 
NiGGa   (2008-02-07 20:54) [1]

TMaskEdit ?


 
NiGGa   (2008-02-07 20:59) [2]

Уф. Не вчитался, прошу прощения.
На какой строке возникает исключительная ситуация?
PosY := StrToInt(edt_PosY.Text); ?
Других не вижу. К чему бы это.


 
Elec3C ©   (2008-02-07 21:01) [3]

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if (Key < "0") or (Key > "9") then Key := #0;
end;


 
{RASkov} ©   (2008-02-07 21:02) [4]

> PosY := StrToInt(edt_PosY.Text);

PosY := StrToIntDef(edt_PosY.Text, Mouse.CursorPos.Y);
:)


 
MsGuns ©   (2008-02-07 21:03) [5]

Просто пример:

function MS_ComFnCheckSymbolForFloatText(Edit: TEdit; Key: Char): Char;
// Функция проверки введенного символа на корректность при вводе чисел
// (Рекомендуется для использования в обработчике TEdit.OnKeyPress)
//  - Edit - указатель на TEdit, который принимает введенный символ
//  - Key - код введенного символа;
begin
 result := Key;
 with Edit do
   if not (Key in ["0".."9","-",DecimalSeparator,Char(VK_BACK),Char(VK_TAB)]) or
      ((Key=",") and (Pos(Key,Text)>0)) or
      ((Key="-") and ((Pos(Key,Text)>0) or (SelStart>0))) then result := #0;
end;


 
MsGuns ©   (2008-02-07 21:06) [6]

Пример использования:

procedure TForm1.Edit1KeyPress((Sender: TObject; var Key: Char);
begin
 Key := MS_ComFnCheckSymbolForFloatText(TEdit(Sender), Key);
end;


 
NiGGa   (2008-02-07 21:23) [7]

[5] Вроде как еще символ "е" допускается?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
15-1201694364
Tserberus
2008-01-30 14:59
2008.03.02
Ну и что у нас там с DelphiDecompiler


2-1202023218
Alex_Storm
2008-02-03 10:20
2008.03.02
DataTimePicker


2-1202319321
Alex8
2008-02-06 20:35
2008.03.02
TDBGrid


2-1201868979
Danco
2008-02-01 15:29
2008.03.02
кнопка: во весь экран


2-1202463717
гость
2008-02-08 12:41
2008.03.02
обработчик кнопки в чужом приложении




   Наверх