Irgendwie eben nicht. classType liefert nicht TClass sondern TBase. Selbst wenn ich TBaseclass nicht explizit definiere.PascalDragon hat geschrieben: Di 28. Jul 2026, 20:51Ja, das soll so, da der Typ von TObject.ClassType TClass ist und TClass hat keinen virtuellen Konstruktor. Wenn du ClassType zu TBaseClass castest, dann wird durch Create der virtuelle Konstruktor von TBase aufgerufen.fliegermichl hat geschrieben: Mo 27. Jul 2026, 10:23 Das folgende Programm erstellt eine Kopie einer Klasse unter Verwendung von class of.
Dabei einmal mit explizitem Typecast und einmal ohne.
Bei der Verwendung ohne den Typecast wird zwar die korrekte Klasse erzeugt, aber deren Constructor nicht aufgerufen.
Soll das so sein und wenn ja - wieso?
Das Problem ist, daß imn zweiten Fall nur TObject.Create aufgerufen wird und damit fList = nil ist.
Code: Alles auswählen
program Project1;
type
TBase = class
end;
var c : TBase;
begin
c := TBase.Create;
writeln(c.ClassType.ClassName);
Readln;
end.