gpt4 book ai didi

delphi - 使用 RTTI 获取变量名称

转载 作者:行者123 更新时间:2023-12-03 14:52:39 25 4
gpt4 key购买 nike

我正在尝试像这样使用 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 名称为空。

有没有办法获取变量名?

最佳答案

RTTI 提供有关类型的信息,而不是有关变量的信息。一般来说,在给定变量地址的情况下,使用 RTTI 无法找到其名称。

RTTI 不仅没有帮助,而且您所尝试的作为字符串对象的方法实际上也是不可能的。想象一个场景,有两个变量引用同一个对象。

S := 'foo';
T := S;

这里的单个字符串对象的名称是什么。是S还是T?

关于delphi - 使用 RTTI 获取变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40374008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com