....
type
 CMPP_Head=record
    rTotal_Length  :byte4;         //包长
    rCommand_ID    :byte4;         //命令
    rSequence_ID   :byte4;         //流水号
end;
.....
procedure TCMPP.Packet_Assort(buf: buffer);
//数据包分类
var
  pp_head:^CMPP_Head;
begin
    pp_head:=@buf;
    case byte4toint(pp_head^.rCommand_ID) of
.......不解的是,pp_head:=@buf,这个是把为buf的指针地址付给pp_head,而我传给buf变量的是一个数据包,不明白?

解决方案 »

  1.   

    buf在内存中是一块地址,只要把指针指向这个地址,然后强制转换结构就能得到里面的数据。
      

  2.   

    buf在内存中是一块地址,你可以强制转换成任何的结构。任何结构在内存中都是一块地址。
      

  3.   

    呵呵,楼上做的是cmpp协议吧
    pp_head:=@buf 把pp-head指针指向数据包buf的地址,并把buf强制转换为CMPP_Head的结构,因此pp_head^.rCommand_ID可以获得命令id
      

  4.   

    楼主做的是cmpp协议吗,请问哪里有地方下载这个协议的源代码了?