Ich möchte folgenden Code von Delphi für
Win32 nach Delphi für .NET portiern:
Delphi-Quellcode:
function IsNegZero(const AValue: Double): Boolean;
begin
Result := PInt64(@AValue)^ = $8000000000000000;
end;
function IsPosZero(const AValue: Double): Boolean;
begin
Result := PInt64(@AValue)^ = $0000000000000000;
end;
Der Code muß geändert werden, weil ja die Pointer-Zauberei nun in Delphi für .NET nicht mehr funktioniert. Was das ganze außerdem noch schwer macht ist die Tatsache, daß Double in der Delphi-Hilfe nicht extra dokumentiert ist.
a) Weiß jemand, ob Double unter .NET sich genauso verhält wie unter
Win32 in bezug auf das Vorzeichen, d.h. daß zumindest intern zwischen positiver und negativer Null unterschieden wird?
b) Weiß jemand, wie man das abfragen kann? Ich habe es mit Bit-Operatoren versucht, aber erhalte z.B. in der Zeile:
Result := (AValue and $8000000000000000) = $8000000000000000;
die Fehlermeldung: "Operator not applicable to this operand type" bezüglich AND.