读书人

怎么偏移指针取得结构

发布时间: 2012-04-24 14:15:38 作者: rapoo

如何偏移指针取得结构?

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(指针)

读书人网 >.NET

热点推荐