Zitat:
Wie bekomme ich denn "korrekt" eine Kopie eines Objekts?
Das ist einfach : garnicht - zumindest nicht out of the box. Im Gegensatz zu C++ kennt ObjectPascal keinen Copy-Constructor. Bei Nachfahren von TPersistent gibt es allerdings eine standardisierte Methode, den Inhalt von einer Klasse in die nächste zu schieben. Bei eigenen Nachfahren muss die allerdings erstmal implementiert werden.
Zitat:
Soll also heißen, wenn der Befehl "daten := daten2;" ausgeführt worden ist und
ich danach einen von beiden eine neue Größe mit "setlength" zuweise,
werden beide eigenständig?
Ja
Zitat:
Des würde ja bedeuten, dass ich mit "daten" aus dem Beispiel nur die Einträge
verändern könnte aber sobald ich etwas an der Größe ändere, wird "daten"
eigenständig?
Ja leider. Beispiel :
Delphi-Quellcode:
var
daten, daten2 : Array of Integer;
begin
//...
daten2 := daten;
daten[0] := 12; // daten[0] und daten2[0] sind 12
...
SetLength(daten,Length(daten));
daten[1] := 12; // daten[1] ist 12 , daten2 wurde nicht geändert
...
meiner Einschätzung nach eine wirklich unschöne Inkonsistenz der dynamischen Arrays,
die in krassem Widerspruch zum Verhalten statischer Arrays auf der einen und der durchgängigen
Copy-on-Write-Semantik bei langer Strings auf der anderen Seite steht.
Bernd