....
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变量的是一个数据包,不明白?
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变量的是一个数据包,不明白?
pp_head:=@buf 把pp-head指针指向数据包buf的地址,并把buf强制转换为CMPP_Head的结构,因此pp_head^.rCommand_ID可以获得命令id