加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 使用RTTI获取变量名称

发布时间:2020-12-15 04:10:30 所属栏目:大数据 来源:网络整理
导读:我试图像这样使用RTTI获取变量名. 这是我的测试. type TStringHelper = record helper for string function Name: string; end; TMyRecord = record Field1:string; end;implementation{ TStringHelper }function TStringHelper.Name: string;var context :
我试图像这样使用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?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读