Einzelnen Beitrag anzeigen

Dax
(Gast)

n/a Beiträge
 
#2

Re: Pointer/Cardinal-Casterei beenden

  Alt 26. Jul 2007, 23:45
Delphi-Quellcode:
function TdynArray.getWord(index: cardinal): word;
begin
     result := PByte(cardinal(data)+(index shl 1))^; // <= hier ist der böse Code
end;
Dieser Code kompiliert? Gut, dann sollte folgendes auch funktionieren:
Delphi-Quellcode:
function TdynArray.getWord(index: cardinal): word;
var temp: PByte;
begin
  temp := PByte(data);
  Inc(temp, index shl 1);
  result := temp^;
end;
Jedenfalls glaube ich, dass das dann geht.. Hab schon lang nix mehr gepointert

edit: Was spricht gegen Array[0..0] und ausgeschaltetes Range-Checking?
  Mit Zitat antworten Zitat