Möchtest du dein TTestyBase-Objekt schon mit Daten ein Properties bestücken oder dient es nur der Erzeugung eines von ihm abgeleiteten Objekts?
Ansonsten könntest du das ganze mit virtuellen Methoden machen...
Delphi-Quellcode:
interface
TTestyBase = class
function SagWas: string; virtual; abstract;
end;
TTestyFloat = class(TTestyBase)
function SagWas: string;
end;
TTestyInteger = class(TTestyBase);
function SagWas: string;
end;
function CreateObject(ClassType :string): TTestyBase;
{...}
implementation
function TTestyFloat.SagWas: string;
begin
Result := 'Ich bin ein TTestyFloat-Objekt';
end;
function TTestyInteger.SagWas: string;
begin
Result := 'Ich bin ein TTestyInteger-Objekt';
end;
function CreateObject(ClassType :string): TTestyBase;
begin
Result := nil;
if ClassType = 'Integer' then
begin
Result := TTestyInteger.Create;
Exit;
end;
if ClassType = 'Float' then
begin
Result := TTestyFloat.Create;
Exit;
end;
end;
{...}
procedure Test;
begin
with CreateObject('Integer') do
begin
ShowMessage(SagWas);
Free;
end;
with CreateObject('Float') do
begin
ShowMessage(SagWas);
Free;
end;
end;