Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

try..except


Nemeziz ©   (2008-02-07 20:51:00) 

Народ, Несколько дней назад начал програмить на 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 21:23:00) [1]

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


MsGuns   (2008-02-07 21:06:00) [2]

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

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


MsGuns   (2008-02-07 21:03:00) [3]

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

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;


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

> PosY := StrToInt(edt_PosY.Text);

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


Elec3C   (2008-02-07 21:01:00) [5]

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


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

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


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

TMaskEdit ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо