Falls du das mit dem String mal brauchen solltest, musst du folgendes tun:
Deine Basisklasse (TMyClass) muss ein indirekter oder direkter Nachfahre von "TPersistent" sein. Dann kannst du im Initialization Teil der
Unit, die die Implementierungen beinhaltet (TMyClass1 etc.) diese mit der Funktion
RegisterClass registrieren. Das würde dann zum Beispiel so aussehen:
Delphi-Quellcode:
unit MyClasses;
uses
Classes;
interface
TMyClass =
class(TPersistent);
TMyClassRef =
class of TMyClass;
TMyClass1 =
class(TMyClass);
TMyClass2 =
class(TMyClass);
implementation
initialization
RegisterClass(TMyClass1);
RegisterClass(TMyClass2);
end.
An die Klassen kommst du dann wieder mit Hilfe der
GetClass funktion dran. Das würde dann so aussehen:
Delphi-Quellcode:
function InstanciateMyClass(AName: string);
begin
result := TMyClassRef(GetClass(AName)).Create();
end;
var
myclass: TMyClass;
begin
myclass := InstanciateMyClass('TMyClass1');
end;
Hoffe das hilft irgendjemandem mal.
Diese "Get-" und "Registerclass" Funktionen von Delphi sind natürlich kein Hexenwerk sondern eigentlich ganz einfach. Ich habe so etwas
hier auch implementiert.
Andreas