Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.14;
Скачать: CL | DM;

Вниз

Как при ошибке конвертирования выйти из процедуры?   Найти похожие ветки 

 
Dr. Andrew   (2007-09-20 18:45) [0]

Добрый вечер, Мастера! Подскажите где в моем коде ошибка. Мне необходимо на возникновение ошибки при конвертировании корректно выйти из процедурs? чтобы можно бвыло исправить ошибку без аварийной остановки и системного диалога об ошибке.


procedure TForm1.MyProcedure();
begin
 try
   Edit2.Text := FloatToStr(Edit1.Text);
 except
   on EConvertError do
      Exit;
 end;
end;

procedure TForm1.Create(Sender : Object);
begin
  Edit1.Text := "0.6"; // здесь я умышленно ставлю ошибку вместо запятой точку
  MyProcedure();
end;


 
Dr. Andrew   (2007-09-20 18:48) [1]

Извините допустил ошибку следует код читать так:


procedure TForm1.MyProcedure();
begin
try
  Edit2.Text := FloatToStr(StrToFloat(Edit1.Text));
except
  on EConvertError do
     Exit;
end;
end;

procedure TForm1.Create(Sender : Object);
begin
 Edit1.Text := "0.6"; // здесь я умышленно ставлю ошибку вместо запятой точку
 MyProcedure();
end;


 
Плохиш ©   (2007-09-20 18:55) [2]


procedure TForm1.MyProcedure();
begin
try
  Edit2.Text := FloatToStr(Edit1.Text);
except
  on E:Exception do
     LogWrite("Эк, кого-то закосячило. Обшибка: " + E.ClassName + ": " + E.Message);
end;
end;


 
Dr. Andrew   (2007-09-20 19:16) [3]

нет, но смысл же не втом чтобы записать просто число, а в том чтобы можно было исправитьзапись в редактируемом поле если вместо запятой поставлена точка и при этом не выскакивала аварийная системная ошибка о неверном конвертировании. Спасибо


 
Anatoly Podgoretsky ©   (2007-09-20 19:36) [4]

TryStrToFloat


 
Korneley ©   (2007-09-20 19:59) [5]

А вот как вариант?
1. Выставить DecimalSeparator как надо.
2. На Экцепте возвратить фокус в Едит (с сообщением...)


 
Однокамушкин   (2007-09-20 21:45) [6]

По умолчанию дельфийский отладчик сообщает о любом исключении, даже если оно потом обрабатывается в try/except, и вы, скорее всего, сообщение отладчика ошибочно называете системным... Отключите опцию Stop on Delphi Exception в окне Tools\Debugger options на странице Language exceptions... или просто запустите программу не из-под дельфей


 
{RASkov} ©   (2007-09-21 02:10) [7]

> [0] Dr. Andrew   (20.09.07 18:45)

procedure TForm1.MyProcedure();
begin
 try
  Edit2.Text := FloatToStr(StrToFloat(Edit1.Text));
 except
  raise; //Возбуждаем ошибку в вызывающей процедуре
 end;
end;

procedure TForm1.Create(Sender : Object);
begin
Edit1.Text := "0.6"; // здесь я умышленно ставлю ошибку вместо запятой точку
try
 MyProcedure();
except
 ShowMessage("Ошибка ввода значения в эдит1"); //Обрабатываем ее(ошибку)
 Edit1.SetFocus;
end;
end;


 
Германн ©   (2007-09-21 02:16) [8]


> Dr. Andrew   (20.09.07 19:16) [3]
>
> нет, но смысл же не втом чтобы записать просто число, а
> в том чтобы можно было исправитьзапись в редактируемом поле
> если вместо запятой поставлена точка и при этом не выскакивала
> аварийная системная ошибка о неверном конвертировании. Спасибо
>

А  обработка OnKeyDown в "редактируемом поле " не помогает?


 
{RASkov} ©   (2007-09-21 02:57) [9]

> procedure TForm1.Create(Sender : Object);
> begin
>   Edit1.Text := "0.6"; // здесь я умышленно ставлю ошибку вместо запятой точку
>   try
>    MyProcedure();
>   except
>    ShowMessage("Ошибка ввода значения в эдит1"); //Обрабатываем ее(ошибку)
>    Edit1.SetFocus;
>   end;
> end;

А я что-то и не обратил внимания, что код на создании формы... Хоть эта и ошибка в данном случае,
но я другое хотел показать... Впрочем это было конкретно ответ на вопрос в сабже,
а решений конкретной проблемы из примера к вопросу, тоже предложили несколько вариантов... :)



Страницы: 1 вся ветка

Текущий архив: 2007.10.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
2-1189572995
Mariya
2007-09-12 08:56
2007.10.14
Подскажите в чем ошибка?


6-1171376436
X-Nex
2007-02-13 17:20
2007.10.14
WebBrowser конец загрузки страницы


2-1189849336
Sonic90
2007-09-15 13:42
2007.10.14
TrackBar


2-1189972791
Alexey_K
2007-09-16 23:59
2007.10.14
Окно, подобие понели задач


2-1190115937
F@T@L_Err0r
2007-09-18 15:45
2007.10.14
MediaPlayer