怎么偏移指针取得结构
如何偏移指针取得结构?Delphi(Pascal) codetypePEInfo ^TEInfoTEInfo packed recordw1: Wordw2: Wor
如何偏移指针取得结构?
Delphi(Pascal) codetype 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(指针)