Thema: Delphi Objekt klonen?

Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Objekt klonen?

  Alt 15. Mär 2009, 12:27
Zitat von omata:
Vielleicht so...
Delphi-Quellcode:
function TNObject.MakeClone: TNObject;
begin
  Result:=TNObject(Self.ClassType.Create);
  Result.Assign(Self);
end;

var O, Oclone:TNObject;
begin
  O:=TNObjDoor.Create;
  Oclone:=O.MakeClone;
  ShowMessage(Oclone.ClassName);
end;
Verzwickterweise gibt dieser Test sogar das richtige aus, allerdings wird der falsche constructor aufgerufen, nämlich der von TNObject. Dadurch werden manche Werte nicht richtig initialisiert und es kracht.

@Pfoto:
Der Typecast auf eine "class of"-Klasse ist mir heute nacht im Bett auch noch eingefallen. Und siehe da, das klappt sogar!
Delphi-Quellcode:
TNObjectClass = class of tnobject;

...

function TNObject.MakeClone: TNObject;
begin
  result := TNObjectClass(ClassType).Create;
  result.Assign(self);
end;
Danke an alle!
  Mit Zitat antworten Zitat