Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Исключительные сиуации


Автор: boobie 17.11.2012, 09:18
Добрый день!
Код

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

var x,y:real;
begin
  try
    x:=y/0;
    writeln(x);
  except
    Writeln('nooooooooooooooooo');
  end;
  read(x);
end.


Не работает! Компилируется, но при запуске - выдает ошибку. Это ж ведь обработка исключительных ситуаций...
Самое веселое то, что если у заменить на число (т.е. поставить строчку 
Код

x:=777/0;

вместо
Код

x:=y/0;

ошибки не будет. Дельфи спокойно делит на ноль! Я понимаю, что это real, и там может быть не ноль...
Пишу в Delphi XE2.

Автор: Illusion Dolphin 17.11.2012, 09:27
Цитата

 Дельфи спокойно делит на ноль!

Она ничего не делит в этом случае. Оптимизиртор заменяет 777/0 на число, т.е. в этом случае на inf, и в момент выполнения просто присваивает его.

Автор: boobie 17.11.2012, 13:50
Разобрался. Если запускать ехе-шник, то все нормально работает, как и должно быть - выводится "nooooooooooooooooo"... Если запустить "из Дельфи" - среда перехватывает ошибку и выводит хз что.

Автор: superVad 18.11.2012, 12:55
Цитата(boobie @  17.11.2012,  12:50 Найти цитируемый пост)
Разобрался. Если запускать ехе-шник, то все нормально работает, как и должно быть - выводится "nooooooooooooooooo"... Если запустить "из Дельфи" - среда перехватывает ошибку и выводит хз что.

Нажми Ок и потом Ф9 - все будет так же.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)