Einzelnen Beitrag anzeigen

dkoehler

Registriert seit: 1. Nov 2007
33 Beiträge
 
#1

Migration nach .NET: Bit-Operatoren und Double

  Alt 2. Nov 2007, 17:44
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.
  Mit Zitat antworten Zitat