首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-02-17 
怎样将记录结构写入BUF中?typeTRecrecordID:integerData:pacharDataLen:integerend...varRec:TRecsr

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

热点排行