怎样将记录结构写入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));