Я пытаюсь получить имя переменной с помощью RTTI, как это.Получить имя переменной с помощью RTTI
Вот мой тест.
type
TStringHelper = record helper for string
function Name: string;
end;
TMyRecord = record
Field1:string;
end;
implementation
{ TStringHelper }
function TStringHelper.Name: string;
var
context : TRttiContext;
begin
context := TRttiContext.Create;
result := context.GetType(@Self).Name; // return empty
context.Free;
end;
procedure TForm2.FormCreate(Sender: TObject);
var
r : TMyRecord;
begin
ShowMessage(r.Field1.Name);
end;
Название возвращаемого TRttiType пуста.
Есть ли способ получить имя переменной?
Большое спасибо за объяснение. Было бы неплохо, если бы RTVI (информация о переменной времени выполнения). :) –
Здесь ничего не нужно "runtime". Компилятору просто понадобится внутренняя среда, которая превращает символ в строку во время компиляции. Также как функция nameof в C# 6. - проголосуйте за нее: https://quality.embarcadero.com/browse/RSP-13290 –
Я использовал голосование. Спасибо @StefanGlienke –