AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Object kopieren

Ein Thema von Hobbycoder · begonnen am 28. Apr 2017 · letzter Beitrag vom 28. Apr 2017
Antwort Antwort
Seite 2 von 2     12   
Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#11

AW: Onject kopieren

  Alt 28. Apr 2017, 13:56
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.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#12

AW: Object kopieren

  Alt 28. Apr 2017, 17:36
Moin...
...einen habe ich noch.
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. Im Prinzip ist es eine Umwandlung in JSON und wieder zurück. Für meine Zwecke reicht es.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 Uhr.
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