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

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

try-except ;не работает ? [D5, Win2k]


Abu ©   (2002-05-31 16:40:00) 

Помогите! Пробую try-except и никак не идет, уже простейший код беру:

var i:real;
begin
try
i:=StrToInt("3")/StrToInt("0");
except
do ShowMessage("деление на 0") ;
end;
end;

а все-равно ShowMessage("деление на 0") не выполняется, а вылетает системное сообщение. Почему?

PS: если пишу для i: i:=3/0; вместо того, что выше - вообще мимо пролетает... Тоже почему?


VID   (2002-05-31 23:31:00) [1]

to abu: ну ты приколист ! :))) Все уже вовсю репу зачесали, а всё так примитивно просто :)))


Виктор Щербаков   (2002-05-31 16:54:00) [2]

В моем предыдущем посте ошибка. Т.к. в выражении стоит вызов функции, оптимизатор не может его выкинуть и генерирует соответствующий код. Кстати вариант с StrToInt у меня отрабатывает правильно.

А вот в случае i:=3/0; оптимизатор выкидывает вычисление выражения, т.к. оно является просто константным.


Abu   (2002-05-31 16:54:00) [3]

Все ребята, спасибо огромное, просто у меня день тяжелый, наверное, - это же в отладке вылетало, а так все в порядке!


Виктор Щербаков   (2002-05-31 16:44:00) [4]

А ты уверен, что выражение вычисляется?
Если значение переменной не используется, то компилятор не будет генерировать код для вычисления выражения (если включена оптимизация).


MBo   (2002-05-31 16:43:00) [5]

оптимизация и вычисление на этапе компиляции


Kozhanov   (2002-05-31 16:42:00) [6]

> Abu
Попробуй это :

try
i:=StrToInt("3")/StrToInt("0");
except
on E : Exception do ShowMessage("деление на 0") ;
end;


Наверх

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