Einzelnen Beitrag anzeigen

Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#1

Pointer/Cardinal-Casterei beenden

  Alt 26. Jul 2007, 23:24
Hallo Leute,

habe einen Code wie diesen (bisschen mehr/ bisschen sinnvoller ):

Delphi-Quellcode:
type PWord = ^word;

     TdynArray = class
     constructor create(size: cardinal);
     destructor destroy; override;
     private
            size: cardinal;
            data: PWord;
     public
           function getWord(index: cardinal): word;
     end;

constructor TdynArray.create(size: cardinal);
begin
     inherited create;
     getMem(data, size);
end;

destructor TdynArray.destroy;
begin
     freeMem(data, size);
     inherited;
end;

function TdynArray.getWord(index: cardinal): word;
begin
     result := PByte(cardinal(data)+(index shl 1))^; // <= hier ist der böse Code
end;
Der besagte Teil macht mir Bauchschmerzen, da ich einen Zeiger in einen Cardinal caste
funktioniert, sieht aber nicht so schick aus und ich weiß nicht, was auf 64-Bit-Maschinen passieren würde

Kennt ihr eine Alternative?

MfG,
Bug

PS: Dynamische Array kommen nicht in Frage, bei Delphi 3 gibt es solchen Luxus noch nicht
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat