Главная страница
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.022 c
2-1202123209
Uno-84
2008-02-04 14:06
2008.03.02
Записи в Базе Данных


15-1200865288
DillerXX
2008-01-21 00:41
2008.03.02
На материнке есть маркировка с названием модели?


2-1202285256
MZG
2008-02-06 11:07
2008.03.02
Как сделать ссылку ветки TreeNode на данные в ListBox


2-1202302113
IntruderLab
2008-02-06 15:48
2008.03.02
Параметры при запуске


2-1202395681
andreoman
2008-02-07 17:48
2008.03.02
как найти узел впри помощи SimpleXML