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?