Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.02;
Скачать: 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 вся ветка

Текущий архив: 2008.03.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
6-1164743451
Petr
2006-11-28 22:50
2008.03.02
прокси


2-1201971424
Lamer666
2008-02-02 19:57
2008.03.02
TreeView ImageList


2-1201900613
HaJik
2008-02-02 00:16
2008.03.02
Как мне "прикрутить" на событие функцию, которая также бы храни


15-1201268736
sauron
2008-01-25 16:45
2008.03.02
Наконец-то....


2-1202472962
Дилан
2008-02-08 15:16
2008.03.02
treeview