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