gpt4 book ai didi

delphi - Delphi:如何获取静态记录的地址

转载 作者:行者123 更新时间:2023-12-03 19:13:36 25 4
gpt4 key购买 nike

    type
TMyRecord = record
private
class constructor create;
public
class var MyField1: string;
class var MyField2: integer;
class var MyField3: extended;
class function ToString: string; static;
end;

class constructor TMyRecord.Create;
begin
TMyRecord.MyField1 := 'Hello, world!';
TMyRecord.MyField2 := 123;
TMyRecord.MyField3 := 3.1415927;
end;

class function TMyRecord.ToString: string;
var
RecType: TRTTIType;
RecFields: TArray<TRttiField>;
I: integer;
begin
RecType := TRTTIContext.Create.GetType(TypeInfo(TMyRecord));
Result := RecType.ToString;
RecFields := RecType.GetFields;
for I := 0 to High(RecFields) do
Result := Result + Format('%s: %s = %s', [RecFields[I].Name, RecFields[I].FieldType.ToString, RecFields[I].GetValue(@TMyRecord).ToString]) + sLineBreak;
end;


我试图让TMyRecord.ToString返回:

    TMyRecord
MyField1: string = Hello, world!
MyField2: integer = 123;
MyField3: extended = 3.1415927;


但是,我在GetValue(@TMyRecord)上遇到编译器错误-找到E2029'('预期,但')'

通常,应使用记录“实例”的地址来调用GetValue。但是在这种情况下,记录是静态的。
我不想将此记录转换为普通记录,创建实例等。我正在尝试为静态记录解决此问题。
如何获得应传递给GetValue的地址?

最佳答案

据我所知,无法通过RTTI访问类字段。

关于delphi - Delphi:如何获取静态记录的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43088204/

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