Это, вероятно, будет "нет", но является там каким-либо способом, которым я могу использовать RTTI Delphi, или олдскульный или 2010 расширил RTTI, для передачи в строке, содержащей название типа, конкретно название перечислимого типа, и иметь его дает мне PTypeInfo для того типа? Я просмотрел RTTI.pas и TypInfo.pas, и я не вижу функции, которая сделала бы это, но я, возможно, пропустил что-то.
Что я ищу:
var
info: PTypeInfo;
begin
info := GetTypeInfoFromName('TComponentStyle');
end;
Или что-то как этот. Вещь, название перечислимого типа было бы передано в; это не было бы известно во время компиляции.
Следующее должно работать с квалифицированным именем.
Полное имя: 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;