Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

разбираюсь с обработкой исключений, сразу возник вопрос [D7]


DINOEL ©   (2007-06-21 15:32:00) 

Простой код:
var
 sum:real;

begin

 Try
 Sum:=100/0;
 Except
 Sum:=99.44;
 End;

  Edit2.Text:=FloattoStr(Sum);
end;

Так вот, в поле Edit2.Text попадает не 99.44 а некая строка "INF"
Что бы это значило ?

в то же время ,если делаю так

Sum:=99.44;
Edit2.Text:=FloattoStr(Sum);

То в поле Edit2.Text - попадает нормальное значение...


Anatoly Podgoretsky   (2007-06-21 16:23:00) [1]

> Reindeer Moss Eater  (21.06.2007 16:08:09)  [9]

По идее Борланду надо бы сделать параметр к среде для данной цели и согласовать райнтайм и дизайнтайм поведение.


Reindeer Moss Eater   (2007-06-21 16:08:00) [2]

Правильный-то он правильный, только что с ним с правильным делать если мы что-то вычисляем?


Anatoly Podgoretsky   (2007-06-21 16:05:00) [3]

Реально никакого исключения нет и по современному стандарту и быть не должно, деление на 0 это не ошибка а бесконечность, к сожалению у Борланда в этом деле непоследовательность. Процессор позволяет вырабатывать как INF так и флаг исключения.
Непоследовательность можешь проверить так

A := 0;
Sum := 100/A


Anatoly Podgoretsky   (2007-06-21 16:05:00) [4]

> Reindeer Moss Eater  (21.06.2007 16:00:06)  [6]

Заметь правильный в отличии от рантайм


Reindeer Moss Eater   (2007-06-21 16:00:00) [5]

Потому что компилер еще на этапе нажатия F9 "записал" результат.


DINOEL   (2007-06-21 15:58:00) [6]

Хотя кажется дошёл :)


DINOEL   (2007-06-21 15:57:00) [7]

Reindeer Moss Eater
Спасибо за инфо, но всё-таки ,не совсем понятно почему это дело так получается.


Reindeer Moss Eater   (2007-06-21 15:38:00) [8]

А некая строка "INF" это сокращение от "infinitive"


Reindeer Moss Eater   (2007-06-21 15:36:00) [9]

реально код Sum:=100/0; никогда не выполняется


Reindeer Moss Eater   (2007-06-21 15:34:00) [10]

Это гримасы оптимизации


Наверх

Титульная страница Поиск, карта сайта Написать письмо