Я могу получить PTypeInfo от строки?

Это, вероятно, будет "нет", но является там каким-либо способом, которым я могу использовать RTTI Delphi, или олдскульный или 2010 расширил RTTI, для передачи в строке, содержащей название типа, конкретно название перечислимого типа, и иметь его дает мне PTypeInfo для того типа? Я просмотрел RTTI.pas и TypInfo.pas, и я не вижу функции, которая сделала бы это, но я, возможно, пропустил что-то.

Что я ищу:

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

Или что-то как этот. Вещь, название перечислимого типа было бы передано в; это не было бы известно во время компиляции.

5
задан Mason Wheeler 26 May 2010 в 17:48
поделиться

1 ответ

Следующее должно работать с квалифицированным именем.

Полное имя: 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;
10
ответ дан 13 December 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: