Ich denke dass du deiner Lösung (
RTTI und Delphi Internas bis an die Grenzen ausreizen) auf den Holzweg bist.
Immer an das
KISS-Prinzip denken!
Leider hast du nirgends erklärt wozu du Strings in Objekte umwandeln möchtest und wie die Klassen aufgebaut sind.
Es gibt aber die Design-Pattern
Class-Factory und
Builder.
Delphi-Quellcode:
TGameObjFactory = class(TObject)
public
class function CreatePlayer:TPlayer;
class function CreateBomb:TBomb;
class function CreateBlackHole:TBlackHole;
class function CreateByString(const s:string):TGameBaseClass;
end;
class function TGameObjFactory.CreatePlayer:TPlayer;
begin
Result := TPlayer.Create;
end;
class function TGameObjFactory.CreateByString(const s:string):TGameBaseClass;
begin
if s='player' then
result := CreatePlayer
else if s='bomb' then
result := CreateBomb
else if s='timebomb' then
begin
Result := CreateBomb; TBomb(Result).Delay := 360;
end
else ...
end;
Eine saubere Lösung ohne Tricks und doppelten Boden.