給定的類: 使用 InvokeRegistry; //定義TRemotable的地方。
型 TMyLabel = A類(TRemotable) //一些出版道具 TMySubLabel = A類(TMyLabel) //更多發表道具將類字符串轉換爲TClass
//some other classes descendent of TMyLabel.
TMyLabelClass = class of TMyLabel;
我的要求是實現:
function StringToClass(string aClassName): TClass;
begin
//your implementation goes here
end;
用法:
function GetMyLabelInstance(string aClassName):TMyLabel;
var
lCloned: TMyLabel;
begin
Tclass lClass = StringToClass('TMySubLabel');
lCloned := TMyLabelClass(lClass).Create;
end;
我正在使用Delp喜7和我的對象不是從TPersistent派生,因此該解決方案並不適用於我的情況: How to convert classname as string to a class?
感謝,
[TOndrej接受的答案](http://stackoverflow.com/questions/2727654/how-to-convert-classname-as-string-to-a-class/2727962#2727962)到你鏈接的問題沒有對該類作出'TPersistent'的任何假設,它可以與你添加到'TStringList'的任何東西一起工作。 – 2011-06-17 07:16:55
'Tclass lClass = StringToClass('TMySubLabel');'對我來說看起來有點C-ish。這是一種可接受的語法(Delphi的一些變體)還是隻是一個僞代碼? – 2011-06-17 08:32:58
@Andriy,它是僞代碼。 – Johan 2011-06-17 09:15:05