Thema: Delphi Objekt duplizieren?

Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#12

Re: Objekt duplizieren?

  Alt 8. Mär 2008, 17:53
Zitat von phXql:
C# und Java können sowas. Machen aber nur eine flache Kopie. Denke das geht mithilfe von Reflection.
*hust*
Delphi-Quellcode:
[Extension]
class method Cloner.CreateDeepClone<T>(instance : T) : T;
begin
  var bf := new BinaryFormatter();

  using s := new MemoryStream() do
  begin
    bf.Serialize(s, instance);
    s.Position := 0;
    exit T(bf.Deserialize(s));
  end;
end;

....

begin
  var a := new MyClass(SomeProperty := 'Abc');
  var b := a. CreateDeepClone();

  b.SomeProperty := b.SomeProperty + 'def';
  ...
end;
In Delphi geht sowas nicht.
Delphis RTTI ist eher das was der Compiler hat liegen lassen, für die meisten Sachen reicht das bissel einfach nicht.
Eine flache Kopie ließe sich anfertigen, indem man den Record hinter dem Objekt kopiert.
Aber das wäre dann nur ein flache Kopie. Sämtliche Referenzen würden immer noch auf die gleichen Bereiche zeigen.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat