Einzelnen Beitrag anzeigen

mannewolff

Registriert seit: 21. Okt 2008
48 Beiträge
 
RAD-Studio 2009 Arc
 
#4

Re: Klassen per String instanhziieren

  Alt 12. Jan 2010, 17:17
Es ist etwas kompizierter aber es geht.

Zunächst die Klasse definieren.

Delphi-Quellcode:
type

  TCommand = class(TPersistent)
  public
    function execute(AContext: TContext) : boolean; virtual;
  end;

  TCommandClass = class of TCommand;
Dann über FindClass eine Klassenreferenz laden und mit newinstance eine Instanz der Klasse (zuvor natürlich die Klasse registrieren) und (!!) die Klasse muss von TPersistenz erben.

Delphi-Quellcode:
procedure TCatalogFactory.loadCatalogData(fname: String; ac : TContext);
var
  o : TCommand;
  tc : TCommandClass;
  s : String;
begin
   s := 'TCommand'; //..... Name der Klasse laden, später aus Datei
   tc := TCommandClass(FindClass(s));
   o := TCommand(tc.newinstance);
   o.execute(ac);

end;

initialization
   RegisterClass(TCommand);
end.
  Mit Zitat antworten Zitat