Ich versuche, Variablennamen mit RTTI wie folgt zu bekommen.Get Variablenname mit RTTI
Hier ist mein Test.
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;
Der Name von TRTtiType zurückgeben ist leer.
Gibt es eine Möglichkeit, Variablennamen zu bekommen?
Vielen Dank für die Erklärung. Es wäre schön gewesen, wenn RTVI (Run Time Variable Information) gehabt hätte. :) –
Nichts "Laufzeit" benötigt hier. Der Compiler würde nur einen intrinsischen Code benötigen, der ein Symbol zur Kompilierzeit in einen String verwandelt. Genau wie der Name der Funktion in C# 6. - Stimme dafür: https://quality.embarcadero.com/browse/RSP-13290 –
Ich habe die Stimme verwendet. Danke @StefanGlienke –