Delphi では、オーバーフロー エラーをどのように検出できInt64
ますか?
整数の場合、次のことができます。
type
MyInt = Integer; //Int64
function TryMaxTimes10(out Res: MyInt): boolean;
var
a, b: MyInt;
begin
{$Q+}
try
a := High(MyInt);
b := 10;
Res := a * b; //REF1
Result := True;
except
Result := False;
end;
{$Q-}
end;
の場合MyInt = Integer
、行 REF1 で例外が発生するため、TryMaxTimes10
戻りますfalse
。
しかし、MyInt を に変更するMyInt = Int64
と、REF1 は例外を発生させずに!をTryMaxTimes10
返します。true
{$Q+}
のヘルプには具体的に言及されていないことを理解していますInt64
: ... {$Q+} state, certain integer arithmetic operations ... are checked for overflow
.
質問: 私の質問は、Int64 のオーバーフロー エラーを検出するにはどうすればよいですか?
(私は Delphi 7 を使用しています。新しいバージョンの Delphi でも同じことが起こりますか?)