Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.03.02;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.056 c
4-1184064734
AZIZE
2007-07-10 14:52
2008.03.02
поддержка длииных имён файлов


3-1191570968
alsov
2007-10-05 11:56
2008.03.02
ODAC и TNSNAME


15-1201269960
oxffff
2008-01-25 17:06
2008.03.02
Теперь и мы сможем так же как в C++ без inc и dec


2-1202575958
88Lion88
2008-02-09 19:52
2008.03.02
Обращение к ячеке Excel delphi


15-1201354775
{RASkov}
2008-01-26 16:39
2008.03.02
Отличия циклов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский