读书人

怎样将记录结构写入BUF中?解决办法

发布时间: 2012-02-17 17:50:42 作者: rapoo

怎样将记录结构写入BUF中?
type
TRec = record
ID: integer;
Data: pachar;
DataLen: integer;
end;
...
var
Rec: TRec;
src: string;
P:PChar;
...
src := '1243243242df3423 ';
Rec.ID := 1;
Rec.DataLen := length(src);
GetMem(Rec.Data, Rec.DataLen);
Move(src[1], Rec.Data^, Rec.DataLen);
//至此已经准备好数据包了
然后想把Rec转化为P,用SOCKET.send(P, Rec.DataLen)发出去。请指教!



[解决办法]
P := Pointer(@Rec.Data);
[解决办法]
纠正
只发送字符串部分,不含结束符
SOCKET.send(Rec.Data, Rec.DataLen);

发送字符串部分,含结束符
SOCKET.send(Rec.Data, Rec.DataLen + 1);

如果要发送整个记录,需要改造你的记录

TRec = record
ID: integer;
DataLen: integer; // 固定大小的内容放前面
Data: array [0..999] of Char; // 不确定大小的内容放后面
end;
[解决办法]
然后使用以下方式发送

SOCKET.send(@Rec, Rec.DataLen + 8);


[解决办法]
写进
move(ARec,ARecTranData.Data[0],SizeOf(TRec));
取出
move(ARecTranData.Data[0],ARec,SizeOf(TRec));

读书人网 >.NET

热点推荐