5

これはおそらく「いいえ」になるでしょうが、Delphi の RTTI、古い学校または 2010 拡張 RTTI を使用して、型の名前、具体的には列挙型の名前を含む文字列を渡す方法はありますか?その型の PTypeInfo を教えてくれますか? RTTI.pas と TypInfo.pas を調べましたが、それを行う関数は見当たりませんが、何かを見落としている可能性があります。

私が探しているもの:

var
  info: PTypeInfo;
begin
  info := GetTypeInfoFromName('TComponentStyle');
end;

またはそのようなもの。つまり、列挙型の名前が渡されます。コンパイル時にはわかりません。

4

1 に答える 1

10

以下は、修飾名で機能するはずです。

修飾名は次のとおりです。UnitName.TypeName

type
 ETypeNotFound = class(Exception);

function GetTypeInfoFromName(aTypeName : String) : pTypeInfo;
var
 C : TRttiContext;
 T : TRttiType;
begin
 T := C.FindType(aTypeName);
 if Not Assigned(T) then
    raise ETypeNotFound.CreateFmt('Type %s is not found',[aTypeName]);

 result := T.Handle;
end;
于 2010-05-26T17:53:56.490 に答える