Einzelnen Beitrag anzeigen

Bernd Ua

Registriert seit: 10. Nov 2003
Ort: Lindhorst
87 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Variablenzuweisung, wann kopie, wann verknüpfung

  Alt 15. Feb 2004, 16:29
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
Bernd Ua
  Mit Zitat antworten Zitat