Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1190310105
Виктор007
2007-09-20 21:41
2007.10.14
Как правильно вызывать INT 3


15-1190081676
Slider007
2007-09-18 06:14
2007.10.14
С днем рождения ! 18 сентября 2007 вторник


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


2-1189758230
shmelina
2007-09-14 12:23
2007.10.14
Показ формы-оповещения без фокуса


2-1189618648
олег79
2007-09-12 21:37
2007.10.14
защита программ от нелегального копирования





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский