nein, das dynamische Array selber läuft delphiintern über einen Pointer
bei einem 1-dimensionalem Array kann man das leicht beheben, indem man diesen Zeiger entsprechend (de)referenziet,
aber bei mehrdimensionalen Arrays hast du so nur Einfluß auf den Pointer der 1. Ebene und nicht auf die der Drunterliegenden.
ein dynamisches Array ist wie ein String/AnsiString
ein statisches eher wie ein ShortString/String[x] oder
Delphi-Quellcode:
record
element0, element1, .... elementN: Byte;
end;
Delphi-Quellcode:
staticArray = record
element0, element1, .... elementN: Byte;
end;
intDynamicArray = record
Header: record;
Referenzzähler: Elementanzahl: Integer;
end;
element0, element1, .... elementN: Byte;
end;
dynamicArray = (@intDynamicArray + SizeOf(Header));
und dein 2-Dimensionales sieht intern etwa so aus
Delphi-Quellcode:
intDynamicArrayEbene1 = record
Header: record;
Referenzzähler: Elementanzahl: Integer;
end;
element0, element1, .... elementN: Byte;
end;
intDynamicArray = record
Header: record;
Referenzzähler: Elementanzahl: Integer;
end;
element0, element1, .... elementN: je (@intDynamicArrayEbene1 + SizeOf(Header));
end;
dynamicArray = (@intDynamicArray + SizeOf(Header));