Einzelnen Beitrag anzeigen

Pascal P

Registriert seit: 16. Nov 2007
14 Beiträge
 
#8

Re: Objekt anhand der Klassenbezeichnung erzeugen

  Alt 20. Jun 2008, 14:58
Hi zusammen!
Ich versuche gerade ähnliches zu machen. Allerdings habe ich noch ein Problem.
Das Objekt erstellen ist ja so kein Problem. Allerdings wird nur mein Constructor der Basisklasse aufgerufen und nicht der des eigentlichen Objektes.

Delphi-Quellcode:
TBaseObjekt = class (TPersistent)
public
    strName : String;
    constructor Create; overload;
end;

TBaseObjectClass = class of TBaseObject;

TExtendedObjekt = class (TBaseObjekt)
public
    constructor Create; overload;
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;
Das Baseobjekt stellt bei mir eine eigene Classroot dar von der ich alles ableite. Ich weiss lediglich mittels eines Strings, hier TExtendedObject' welches Object ich erzeugen muss/will. Also kann ich mich nur auf den allgemeinen kleinsten Nenner, die TBaseObject, beziehen. Das erstellte Objekt ist auch vom Typ TExtendedObject. Jedoch eben nicht mit den für dieses Object initialisierten Werten, sondern denen der Basisklasse.

Hoffe konnte verständlich machen um was es mir geht und hoffe auf Hilfe.
Liebe Grüsse Pascal
  Mit Zitat antworten Zitat