是否可以使用新的德尔福的RTTI库从字符串中检索TypeInfo?



我想知道这是否可能。我想获取TypeInfo,将类型的名称作为字符串传递。

像这样:

type
TSomeValues = record
ValueOne: Integer;
ValueTwo: string;
end;

function ReturnTypeInfo(aTypeName: string): TypeInfo;
begin
// that's is the issue
end;
procedure Button1Click(Sender: TObject);
var
_TypeInfo: TypeInfo;
begin
_TypeInfo := ReturnTypeInfo('TSomeValues');
end;

使用TRttiContext.FindType()方法和TRttiType.Handle属性,例如:

uses
..., System.TypInfo, System.Rtti;
function ReturnTypeInfo(aTypeName: string): PTypeInfo;
var
Ctx: TRttiContext;
Typ: TRttiType;
begin
Typ := Ctx.FindType(aTypeName);
if Typ <> nil then
Result := Typ.Handle
else
Result := nil;
end;
...
type
TSomeValues = record
ValueOne: Integer;
ValueTwo: string;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
_TypeInfo: PTypeInfo;
begin
_TypeInfo := ReturnTypeInfo('Unit1.TSomeValues');
...
end;

最新更新