Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Kopie statt Zeiger (https://www.delphipraxis.net/107124-kopie-statt-zeiger.html)

Raoul S. 22. Jan 2008 23:13


Kopie statt Zeiger
 
Hallo,

wie erhalte ich eine Kopie eines Objekts, statt nur den Zeiger, wenn ich eine Klasse habe, die nicht von TPersistent abgeleitet ist?

Dax 22. Jan 2008 23:35

Re: Kopie statt Zeiger
 
Dazu brauchst du in der Regel einen Kopierkonstruktor, der das "alte" Objekt als Eingabe annimmt und daraus das aktuelle Objekt als Kopie erstellt.

Raoul S. 22. Jan 2008 23:49

Re: Kopie statt Zeiger
 
an sowas hab ich auch schonmal gedacht, aber hab gehofft es gäbe ne einfacherer lösung, wie zum beispiel in php nen eigenen operator... trotzdem danke!!

Reinhard Kern 23. Jan 2008 02:32

Re: Kopie statt Zeiger
 
Zitat:

Zitat von Raoul S.
an sowas hab ich auch schonmal gedacht, aber hab gehofft es gäbe ne einfacherer lösung, wie zum beispiel in php nen eigenen operator... trotzdem danke!!

Hallo,

in Delphi ist das Problem so gut wie unlösbar, weil das Objekt selbst wieder Objekte oder eben vielmehr Zeiger darauf enthalten kann - falls du dich entscheidest, auch davon nicht den Zeiger, sondern den Inhalt zu kopieren, müsstest du neue Instanzen anlegen, was garnicht geht - es sind keine Informationen über den Constructor verfügbar. Und zudem stellt sich die Frage rekursiv in der nächsten Stufe neu, bis du alle Zeiger aufgelöst hast.

Gruss Reinhard

Bernhard Geyer 23. Jan 2008 06:08

Re: Kopie statt Zeiger
 
Zitat:

Zitat von Dax
Dazu brauchst du in der Regel einen Kopierkonstruktor, der das "alte" Objekt als Eingabe annimmt und daraus das aktuelle Objekt als Kopie erstellt.

Die Assign-Methode kannst du dafür verwenden. Für eigene Klassen mußt du diese jedoch selbst implementieren um die eigene Klassenerweiterungen zu ergänzen.

Dax 23. Jan 2008 06:13

Re: Kopie statt Zeiger
 
True. Aber Assign gibt es erst ab TPersistent :)

Bernhard Geyer 23. Jan 2008 06:27

Re: Kopie statt Zeiger
 
Zitat:

Zitat von Dax
True. Aber Assign gibt es erst ab TPersistent :)

Niemand verbietet einen Assign für seine eigenen Klassen einzuführen auch wenn diese nicht von TPersistent abgeleitet sind

Dax 23. Jan 2008 06:33

Re: Kopie statt Zeiger
 
Natürlich verbietet das niemand. Aber so wie ich die Frage verstehe geht es um die inhärente Möglichkeit einer einfachen Objektkopie. Und "einfach" schließt für ein erzwungenes Klassendesign oder sowas aus...

Bernhard Geyer 23. Jan 2008 07:29

Re: Kopie statt Zeiger
 
Zitat:

Zitat von Dax
Natürlich verbietet das niemand. Aber so wie ich die Frage verstehe geht es um die inhärente Möglichkeit einer einfachen Objektkopie. Und "einfach" schließt für ein erzwungenes Klassendesign oder sowas aus...

Stimmt auch wieder. Da ich mich in PHP nicht auskenne weis ich nicht was da genau verwendet wird oder ob die Sprache nicht alle Möglichkeiten von Delphi besitzt um dadurch sowas einfach zu ermöglichen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz