1. 没错. ^_^
2. 只要想办法将结构中的数据按顺序串行发出, 就可以了, 不一定要定义成结构类型的.
当然, 定义成结构类型的看起来比较舒服, 但实际发送的时候还是要编码转换的.比如:
CommStruct=record
CommandID:integer;
CommandParamLength:integer;
CommandParamString:string;
end;
那么发送的时候要:
var send_buf
char; i:integer;
send_buf:=stralloc(1024);
i:=0;
copyint(CommTo.CommandID, send_buf, sizeof(int));
i:=i+sizeof(int);
copyint(CommTo.CommandParamLength, (send_buf+i), sizeof(int));
i:=i+sizeof(int);
move(commTo.CommandParamString, (send_buf+i)^, CommTo.CommParamLength);
i:=i+CommTo.ParamLength;
{then send send_buf via communication port or network, etc.}
其中Copyint是将Int数据填入缓冲区内的, 比如:
procedure CopyInt(var I;s
char;int_length:integer);
pII
char absolute i;
begin
move(pII^, s^, int_length);
end;