Thema: Delphi DWORD-Cast unter XE2 x64

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#3

AW: DWORD-Cast unter XE2 x64

  Alt 31. Jan 2012, 10:45
Delphi-Quellcode:
// da irgendwer auf die saublöde Idee gekommen ist den Integer nicht mehrmitwachsen zu lassen :stupid:
{$IF Declared(NativeUInt)}
  Inc(NativeUInt(Notifydata), Nextentry);
{$ELSE}
  Inc(Cardinal(Notifydata), Nextentry);
{$IFEND}

// oder

Inc({$IF Declared(NativeInt)}NativeInt{$ELSE}Cardinal{$ENDIF}(Notifydata), Nextentry);

// oder

type // global deklariert
  Irgendwas = {$IF Declared(NativeUInt)}NativeInt{$ELSE}Cardinal{$ENDIF};

Inc(Irgendwas(Notifydata), Nextentry);

// oder

type // macht man bei diesem Scheiß nicht mit, dann :twisted:
  {$IF Declared(NativeInt)}
    Integer = NativeInt;
    Cardinal = NativeUInt;
  {$IFEND}

Inc(Cardinal(Notifydata), Nextentry); // Pointer sind vorzeichenlos :zwinker:

// oder

Inc(LPARAM(Notifydata), Nextentry); // weiß jetzt nicht direkt wo es deklariert ist (vermutlich Windows oder Messages)
// LPARAM/WPARAM/RPARAM würd für Konvertierungen bei SendMessages verwendet

// oder

Inc(PAnsiChar(Notifydata), Nextentry); // PByte verfügt scheinbar nicht immer eine über Pointer-Arithmetik
// PChar/PAnsiChar/PWideChar verfügen aber über sowas und PAnsiChar rechnet immer mit 1
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (31. Jan 2012 um 10:53 Uhr)
  Mit Zitat antworten Zitat