Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.167 Beiträge
 
Delphi 12 Athens
 
#4

Re: Zu unbekanntem Klassenderivat casten?

  Alt 12. Mär 2009, 23:22
test.ClassType.Create

das Problem hierbei ist, daß ClassType vom Typ TClass ist, was der Klassentyp von TObject ist.
leider wird hier wohl vom Compiler .Create mit dem "Variablen"-Type hat verlinkt, also TClass.Create verwendet und demnach wird ein TObject erstellt.



meine schnelle Lösung war es eine "neue" Function einzuführen siehe Function CreateInstance in
http://www.delphipraxis.net/internal...t.php?t=151373

du mußt ja kein Interface nehmen (TObject oder TBasis reichen auch)
Delphi-Quellcode:
Function TBasis.CreateInstance: TBasis; Virtual; Abstract;

Function TAbleitungA.CreateInstance: TBasis; Override;
  Begin
    Result := TAbleitungA.Create;
  End;
und das würde dann in jeder Ableitung entsprechend überschrieben.



was auch geht, wäre: (ist aber nicht grad flexibel )
Delphi-Quellcode:
if test.ClassType is TAbleitungA then kopie := TAbleitungA.Create
else if test.ClassType is TAbleitungB then kopie := TAbleitungB.Create
.....
[edit] da hat dächschen wohl schneller getippt
[edit2] abstract hatte ich es ... zumindestens im programm
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat