![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Пишу прогу, где надо считывать много иныфы из текстовых полей, посимвольную проверку ввода делать не хочу (долго, можно что-то не предусмотреть, т.д.), решил сделать через try.
Код:
type
TEditPointer = ^TEdit;
function EditToByte(LocalEditPointer: TEditPointer; var a: byte): boolean;
var b: integer;
begin
EditToByte:=true;
try
b:=StrToInt(LocalEditPointer.Text);
if b>255 then
EditToByte:=false
else
try
a:=b;
except
on E: Exception do
EditToByte:=false;
end;
except
on E: Exception do
EditToByte:=false;
end;
end;Первый раз работаю с этой конструкцией в делфи, потому ошибка наверняка какая-то глупая, но, хоть убей, не могу ее найти. |
|
#2
|
||||
|
||||
|
Пользуй Strtointdef
|
|
#3
|
|||
|
|||
|
Нормально работает.
Немного упростил твой код: Код:
function EditToByte(AEdit : TEdit; var a : Byte) : Boolean;
var
b : Integer;
begin
Result := False;
Try
b := StrToInt(AEdit.Text);
If b <= 255 Then
Begin
a := b;
Result := True;
End;
Except
On E : Exception Do ; // Hide all exceptions
End;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
a : byte;
begin
a := 10;
If EditToByte(Edit1,a)
Then ShowMessage('Success: a = ' + IntToStr(a))
Else ShowMessage('Error: a = ' + IntToStr(a));
end; |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Morik666 (05.03.2015)
| ||
|
#4
|
|||
|
|||
|
Цитата:
Это не совсем то, что надо. lmikle, благодарочка. Тему можно закрывать. |
|
#5
|
||||
|
||||
|
Есть TryStrToInt, делает то же самое, что твои костыли с try except.
|