Можно ли извлечь TypeInfo из строки, используя новую библиотеку RTTI Delphi? - PullRequest
0 голосов
/ 15 мая 2018

Мне интересно, возможно ли это?Я хочу получить 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;

1 Ответ

0 голосов
/ 15 мая 2018

Используйте метод 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;
...