![]() |
Objekt kopieren... gibt es was Neues ?
Hallo alle...
Ich wollte 2 getrennte Objekte (Original / geändert) um evt. den Ursprungszustand wieder herstellen zu können und das geänderte für die Validitätsprüfung. Dabei bin ich der Hilfe von TPersistent ausgeliefert worden... :roll: Zitat:
Da die Beiträge alle samt aus den Jahren 2002 - 2008 etwa stammen drängte sich die Frage auf, ob mit den Neuen Delphi´s evt. neue Techniken eingeführt wurden um eine Objektkopie zu realisieren... Danke für Info´s |
AW: Objekt kopieren... gibt es was Neues ?
Naja mit Hilfe der RTTI lässt sich eigentlich immer was machen. Ab Delphi 2010 (?) sollte man auch die Public-Properties auslesen können glaube ich. (Du musst sie nicht mehr extra published machen).
|
AW: Objekt kopieren... gibt es was Neues ?
Danke für die schnelle Antwort... 8-)
Das mit der RTTI habe ich auch gelesen. Nur reichen mir die Public Properties nicht. Ich bräuchte eine vollständige Kopie. |
AW: Objekt kopieren... gibt es was Neues ?
Du könntest eventuell die dbExpress-Routinen benutzen, die auch DataSnap zum Marshalling/Unmarshalling verwendet. Ich fürchte aber, dass dir in der Professional die entsprechenden Units fehlen, da DataSnap erst in der Enterprise dabei ist.
Du kannst ja mal schauen, ob du die Units DBXJSON und DBXJSONReflect hast, dann sehen wir ggf. weiter. ;-) |
AW: Objekt kopieren... gibt es was Neues ?
Liste der Anhänge anzeigen (Anzahl: 1)
...die wären schon mal da.
|
AW: Objekt kopieren... gibt es was Neues ?
Dann findest du im SVN hier eine passende Demo, das Repository kannst du einfach mit Delphi öffnen:
![]() ![]() (Außerdem hast du die Demo dann vermutlich auch schon lokal in den Samples.) Für dich interessant sind die Knöpfe zum Marshalling und Unmarshalling. ;-) |
AW: Objekt kopieren... gibt es was Neues ?
Zitat:
|
AW: Objekt kopieren... gibt es was Neues ?
Selbst "private" Dinge lassen sich mit der neuen RTTI standardmäßig auslesen (ja, es gibt einen Grund, warum die EXEn so groß geworden sind :roll: )
[edit] Da war zwar wer schneller, aber egal. :angle2: [/edit] Aber beim Kopieren muß man aufpassen, denn vorallen wenn Pointer und Handle im Spiel sind (noch schlimmer, wenn gecastete Pointer und Handle z.B. als Integer vorkommen) oder irgendwelche Indize auf eindeutige externe Strukturen (z.B. die ID einer Hardware- oder Datenbankverbindung), dann kann man ohne Kenntnisse des Aufbaus und der Funktion dieses Objektes eigentlich nichts kopieren, ohne irgendwas kaputtzumachen. Aus diesem Grund sollte man vorallem vor den Interna (private/protected) eher Abstand nehmen. |
AW: Objekt kopieren... gibt es was Neues ?
Diese Lösung ist sehr kompakt, erfordert nur Delphi 2010 und keine weiteren Bibliotheken:
![]() Sie verwendet die neuen JSON Klassen in Delphi um das Objekt erst zu serialisieren und dann wieder in ein neues zu deserialisieren. |
AW: Objekt kopieren... gibt es was Neues ?
Genau die Lösung wird ja in der Demo oben verwendet...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 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