如何偏移指针取得结构?
- Delphi(Pascal) code
type PEInfo = ^TEInfo; TEInfo = packed record w1: Word; w2: Word; end; PIPSet = ^TIPSet; TIPSet = packed record Length: Word; end;var EInfo: PEInfo; pdata: Pointer; IPSet: PIPSet;begin pdata := $XXXXXX; //这个只是一个指针,而指针所指向的是一个结构,这个结构是PEInfo + PIPSet EInfo := @PEInfo(pdata); //这里取得EInfo结构 IPSet := @PIPSet(pdata + ????); //PEInfo占4个长度,如何加偏移取得PIPSet的结构? SizeOf(EInfo)? end.
[解决办法]
var
EInfo: PEInfo;
pdata: Pointer;
IPSet: PIPSet;
begin
pdata := $XXXXXX;
EInfo := PEInfo(pdata);
inc(longword(pdata),sizeof(TEInfo));
IPSet := PIPSet(pdata);
Dec(longword(pdata),sizeof(TEInfo));
end.
试试
[解决办法]
如果是指向 PEInfo的指针,那么 指针+1,就是增加一个sizeof(TEInfo)
[解决办法]
试试 inc(指针)