gpt4 book ai didi

delphi - 如果字段是过程或函数指针,如何获取字段的地址?

转载 作者:行者123 更新时间:2023-12-03 15:04:19 34 4
gpt4 key购买 nike

我必须进行一些记录子数据大小计算,因此创建了类似的内容

function GetSubDataSize(const Rec: TRecord): integer;
begin
Result:=integer(@Rec.Field2) - integer(@Rec.Field1);
end;

一切正常,除了一种情况,如果其中一个 Field 是过程或函数指针,那么在

的情况下
TRecord = record
Field2: procedure(Sender: TObject) of object;
end;

该函数获取过程本身的地址。有没有办法对字段进行类型转换以获取字段的地址而不是函数的地址?我知道我可以使用变体零件记录来解决它,但只是不想使用它。

谢谢

最大

最佳答案

你试过@@吗?

type
TRecord = record
Field1:integer;
Field2:TNotifyEvent;
end;

function GetSubDataSize(const Rec: TRecord): integer;
begin
result := integer(@@Rec.Field2) - integer(@Rec.Field1);
end;

给我 8,这是我对 Delphi 2010 的期望。

N@

关于delphi - 如果字段是过程或函数指针,如何获取字段的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3194034/

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