我很惊讶没有得到除零异常。该如何恢复它?
我安装了最新的Berlin 10.1,创建了一个新项目。
procedure TForm1.Button1Click(Sender: TObject);
var
a: Double;
begin
a := 5/0; // No exception
ShowMessage(a.ToString); // -> 'INF'
end;
我很惊讶没有得到除零异常。该如何恢复它?
我安装了最新的Berlin 10.1,创建了一个新项目。
procedure TForm1.Button1Click(Sender: TObject);
var
a: Double;
begin
a := 5/0; // No exception
ShowMessage(a.ToString); // -> 'INF'
end;
a := 5/0;
5/0
在技术术语中被称为常量表达式。+INF
。如果你更改表达式,使其至少有一个参数不是常量表达式,则将在运行时评估它,并引发一个除以零异常。SetExceptionMask(exAllArithmeticExceptions);
要启用所有浮点异常,请使用:
SetExceptionMask([]);
program test;
uses Math;
var
xx,yy: double;
begin
SetExceptionMask([]);
xx := 1;
yy := 0;
halt(round(xx/yy));
end.
SetExceptionMask(GetExceptionMask - [exZeroDivide]);
。 - Rudy Velthuis