我试图像这样使用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;
Run Code Online (Sandbox Code Playgroud)
TRttiType返回的名称为空.
有没有办法得到变量名?
RTTI提供有关类型而不是变量的信息.通常,在给定变量地址的情况下,使用RTTI无法找到其名称.
RTTI不仅没有帮助,而且您正在尝试的,作为字符串对象的方法,实际上是不可能的.想象一下,有两个变量引用同一个对象的场景.
S := 'foo';
T := S;
Run Code Online (Sandbox Code Playgroud)
这里单个字符串对象的名称是什么.是S还是T?
| 归档时间: |
|
| 查看次数: |
819 次 |
| 最近记录: |