delphi – 获取struct var AKA的位置记录字段的偏移量
发布时间:2020-12-15 09:09:32 所属栏目:大数据 来源:网络整理
导读:我想得到一个结构/记录的“位置”. 说我有这个记录: type MyStruct = record MyInteger : Integer; MyInteger2 : Integer; MyInteger3 : Integer; MyFunc : function (FirstParam : WideString; SecondParam : String) : Integer; MyString : String; MyStr
我想得到一个结构/记录的“位置”.
说我有这个记录: type MyStruct = record MyInteger : Integer; MyInteger2 : Integer; MyInteger3 : Integer; MyFunc : function (FirstParam : WideString; SecondParam : String) : Integer; MyString : String; MyString2 : WideString; MyPchar : pchar; end; 如您所见,此记录的大小为28字节(7个字符x 4个字节).基本上因为所有变量都是4字节变量(如整数)或指针(也是4字节). 希望你们知道我的意思吗? BTW: 解决方法
您可以使用某些指针算法获取任何记录成员的偏移量:
type PMyStruct = ^MyStruct; var Offset: Integer; begin Offset := Integer(@(PMyStruct(nil).MyInteger3)); // or: // Offset := Integer(Addr(PMyStruct(nil).MyInteger3)); end; 如果你想要函数的偏移量,你需要像这样编码: Offset := Integer(@@PMyStruct(nil).MyFunc); // or: // Offset := Integer(Addr(@PMyStruct(nil).MyFunc)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |