Zitat von
Codewalker:
Zitat von
himitsu:
Vermutlich bewirkt es bei ihm nichts,
aber dieses wäre praktisch die Entsprechung von UniqueString für dynamische Arrays
und sorgt quasi dafür, daß es nur eine Referenz gibt und daß diese Variable als einzige Referenz für dieses Array existiert.
Kannst du das noch etwas genauer erklären? Ich kann Dir da nicht 100%ig folgen.
Dynamische Array-Variablen sind nur
Referenzen auf den echten Array-Speicherbereich. In folgendem Code (courtesy of
http://www.hsg-kl.de/faecher/inf/mat...rray/index.php)
Delphi-Quellcode:
procedure Test;
var
A, B: array of Integer;
begin
SetLength(A, 1);
A[0] := 1;
B := A;
B[0] := 2; // ***
end;
ist vor Zeile *** A[0] = 1, danach A[0] = 2, obwohl doch auf B[0] zugeweisen wurde. Das liegt daran, das die Zuweisung B := A dafür sorgt, dass B auf den gleichen Speicherbereich wie A zeigt. Das ändert, sich wenn du
Delphi-Quellcode:
B := A;
SetLength(B, Length(B)); // ###
oder einfacher
B := Copy(A);
schreibst. Die Variante mit ### meint himitsu.