Irgendwie muss ich grad voll ends auf dem Schlauch stehen. Habe mal eben die Änderung mit virtual gemacht. gehen tut es aber noch immer nciht.
Mein Programmcode sieht nun in etwa so aus.
Delphi-Quellcode:
TBaseObjekt =
class (TPersistent)
public
strName :
String;
constructor Create;
virtual;
end;
TBaseObjectClass =
class of TBaseObject;
TExtendedObjekt =
class (TBaseObjekt)
public
constructor Create;
end;
constructor TBaseObjekt.Create;
begin
Self.strName := '
Base';
end;
constructor TExtendedObjekt.Create;
begin
Self.strName := '
Extendet';
end;
procedure Test();
var
cls : TPersistentClass;
obj : TBaseObject;
begin
// Klassenreferenz ermitteln
cls := FindClass('
TExtendedObjekt');
// Objekt-Instanz erzeugen
obj := TBaseObjectClass(
cls ).Create();
// Test-Ausgabe
ShowMessage(TExtendedObjekt(obj).strName);
// Die Ausgabe sollte dann Base sein
end;
Funktionieren tut es noch immer wie davor. Es wird der Constructor der Basisklasse verwendet und nicht der der eigentlichen Klasse.