Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > почему не генерируется EOverflow


Автор: victor79 2.8.2008, 21:18
Если класс исключений EOverflow - переполнение при вещественных операциях, но он никогда не возникает, даже если я явно сделаю переполнение. Как заставить его работать?

Автор: VICTAR 2.8.2008, 21:55
Код

procedure TForm1.btn1Click(Sender: TObject);
var
  d: Double;
begin
  d := 500000;
  try
    while True do
      d := d * d;
  except on EOverflow do
      ShowMessage('EOverflow');
  end;
end;

Автор: victor79 2.8.2008, 22:50
именно про это я и говорю, у меня на Delphi 7, указанный выше код выполняется пока d не становится +INF а после тоже продолжает выполняться умножая inf на inf и не генеря никакого исключения.

Автор: THandle 2.8.2008, 22:58
Код

uses Math;

procedure TForm1.Button1Click(Sender: TObject);
var
  d: Double;
begin
  d := 500000;
  SetExceptionMask(GetExceptionMask - [exOverflow]);
  try
    while True do
      d := d * d;
  except on EOverflow do
      ShowMessage('EOverflow');
  end;
end;

Автор: victor79 2.8.2008, 23:15
SetExceptionMask - это действительно сработало, спасибо.

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