Mit
dynArray2 := dynArray1;
wird aber nur die Referenz kopiert. Wenn man nun
dynArray2[0] := IrgendwasNeues;
setzt, wird auch dynArray1[0] geändert! (Anderes als bei Strings). Das Kopieren der Referenz ist nicht das gleiche, wie der Copy-Befehl. Nur beim Copy-Befehl wird der komplette Inhalt kopiert.
Die Delphi-Hilfe dazu:
Zitat:
Wenn X und Y Variablen desselben dynamischen Array-Typs sind, führt die Anweisung X := Y dazu, dass X auf dasselbe Array wie Y zeigt. (Es ist nicht erforderlich, vor dieser Operation Speicher für X zu reservieren.) Im Gegensatz zu Strings und statischen Arrays wird copy-on-write nicht für dynamische Arrays verwendet. Deshalb werden diese nicht automatisch kopiert, bevor einem ihrer Elemente ein Wert zugewiesen wird.