Форум: "Начинающим";
Текущий архив: 2007.07.15;
Скачать: [xml.tar.bz2];
Внизразбираюсь с обработкой исключений, сразу возник вопрос Найти похожие ветки
← →
DINOEL © (2007-06-21 15:32) [0]Простой код:
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 - попадает нормальное значение...
← →
Reindeer Moss Eater © (2007-06-21 15:34) [1]Это гримасы оптимизации
← →
Reindeer Moss Eater © (2007-06-21 15:36) [2]реально код Sum:=100/0; никогда не выполняется
← →
Reindeer Moss Eater © (2007-06-21 15:38) [3]А некая строка "INF" это сокращение от "infinitive"
← →
DINOEL © (2007-06-21 15:57) [4]Reindeer Moss Eater
Спасибо за инфо, но всё-таки ,не совсем понятно почему это дело так получается.
← →
DINOEL © (2007-06-21 15:58) [5]Хотя кажется дошёл :)
← →
Reindeer Moss Eater © (2007-06-21 16:00) [6]Потому что компилер еще на этапе нажатия F9 "записал" результат.
← →
Anatoly Podgoretsky © (2007-06-21 16:05) [7]Реально никакого исключения нет и по современному стандарту и быть не должно, деление на 0 это не ошибка а бесконечность, к сожалению у Борланда в этом деле непоследовательность. Процессор позволяет вырабатывать как INF так и флаг исключения.
Непоследовательность можешь проверить такA := 0;
Sum := 100/A
← →
Anatoly Podgoretsky © (2007-06-21 16:05) [8]> Reindeer Moss Eater (21.06.2007 16:00:06) [6]
Заметь правильный в отличии от рантайм
← →
Reindeer Moss Eater © (2007-06-21 16:08) [9]Правильный-то он правильный, только что с ним с правильным делать если мы что-то вычисляем?
← →
Anatoly Podgoretsky © (2007-06-21 16:23) [10]> Reindeer Moss Eater (21.06.2007 16:08:09) [9]
По идее Борланду надо бы сделать параметр к среде для данной цели и согласовать райнтайм и дизайнтайм поведение.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.07.15;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.043 c