Главная страница
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.02 c
2-1202200120
Viktor
2008-02-05 11:28
2008.03.02
Отловить момент приаттачивания своей dll к процессу


15-1201381800
VID
2008-01-27 00:10
2008.03.02
Определение объекта компонента под указателем мыши


2-1202320069
Res
2008-02-06 20:47
2008.03.02
Ошибка в коде


15-1201424349
Kostafey
2008-01-27 11:59
2008.03.02
С днем рождения ! 26 января


15-1201467030
Иксик
2008-01-27 23:50
2008.03.02
Очень нужен кто-нибудь с американским IP