Форум: "Начинающим";
Текущий архив: 2007.10.14;
Скачать: [xml.tar.bz2];
ВнизКак при ошибке конвертирования выйти из процедуры? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c