Mak*_*see 5 delphi data-structures
我必须做一些记录子数据大小计算,所以创建了类似的东西
function GetSubDataSize(const Rec: TRecord): integer;
begin
Result:=integer(@Rec.Field2) - integer(@Rec.Field1);
end;
Run Code Online (Sandbox Code Playgroud)
除了一种情况,如果Field中的一个是一个过程或函数指针,那么一切都很好,所以如果是
TRecord = record
Field2: procedure(Sender: TObject) of object;
end;
Run Code Online (Sandbox Code Playgroud)
该函数获取过程本身的地址.有没有办法对字段进行类型转换以获取字段的地址而不是函数的地址?我知道我可以使用变体部分记录来解决它,但只是不想使用它.
谢谢,
马克斯
Nat*_*Nat 11
你有没有尝试过 @@?
type
TRecord = record
Field1:integer;
Field2:TNotifyEvent;
end;
function GetSubDataSize(const Rec: TRecord): integer;
begin
result := integer(@@Rec.Field2) - integer(@Rec.Field1);
end;
Run Code Online (Sandbox Code Playgroud)
给我8,这是我对Delphi 2010的期望.
N - [