Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Object kopieren (https://www.delphipraxis.net/192545-object-kopieren.html)

Hobbycoder 28. Apr 2017 12:56

AW: Onject kopieren
 
Zitat:

Zitat von Aviator (Beitrag 1369387)
Wenn das wirklich so viel Arbeit macht, dann solltest du dir evtl. auch Gedanken darüber machen, deinen Code etwas zu refactorn. Mache aus deinem großen Object mehrere sinnvoll zueinandergehörende kleinere Objects. Da ist dann zwar trotzdem einmal die Arbeit fällig für jedes Object eine Assign() Methode zu schreiben, aber der Gesamtüberblick wird dadurch wesentlich besser. Ich vermute ja mal, dass wir hier nicht nur von 20 Properties reden. Weil das wäre eine Anzahl für die es nicht so aufwendig wäre, eine Assign Methode zu schreiben.

Naja, viel Arbeit ist ja relativ ;-)
Sind halt einige Listen, die ihrerseits dann auch wieder einiges an Objecten beinhalten.

Ich habe schon damit angefangen, das jetzt mit Assign zu machen.
Mit Günther's Antwort hatte sich die Sache für mich im Grund bereits erledigt.

War nur kurz mal außer Haus, deswegen konnte ich das nicht vorher Anworten.

haentschman 28. Apr 2017 16:36

AW: Object kopieren
 
Moin...:P
...einen habe ich noch. 8-)
Delphi-Quellcode:
uses
  Data.DBXJSON, Data.DBXJSONReflect; // ohne Gewähr
...
function TBlubb.ObjectCopy(aValue: TObject): TObject;
var
  MarshalObj: TJSONMarshal;
  UnMarshalObj: TJSONUnMarshal;
  JSONValue: TJSONValue;
begin
  Result := nil;
  MarshalObj := TJSONMarshal.Create;
  try
    UnMarshalObj := TJSONUnMarshal.Create;
    try
      JSONValue := MarshalObj.Marshal(aValue);
      try
        if Assigned(JSONValue) then
          Result := UnMarshalObj.Unmarshal(JSONValue);
      finally
        JSONValue.Free;
      end;
    finally
      UnMarshalObj.Free;
    end;
  finally
    MarshalObj.Free;
  end;
end;
Damit kopiere ich ein komplexes Objekt, u.a. mit generischen Listen und deren Inhalt, in eine neue Instanz. :P Im Prinzip ist es eine Umwandlung in JSON und wieder zurück. Für meine Zwecke reicht es. :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:50 Uhr.
Seite 2 von 2     12   

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