《delphi中Indy9向indy10迁移SendBuffer》由会员分享,可在线阅读,更多相关《delphi中Indy9向indy10迁移SendBuffer(2页珍藏版)》请在金锄头文库上搜索。
1、delphi 中 Indy9 向 indylO 迁移 SendBuffer/ReadBuffer 问题indylO 2009-05-31 15:46 阅读 20 评论 0字号:大中小以前在indy9中可以用SendBuffer/ReadBuffer 直接发送/接收一个自定义的结构(假设为CB),但此方法在Indy10中被取消.解决办法如下,tidbytes 类型要引用单元uses IdGlobal;自定义的结构为:TCB = record Integer;Name:String40;Pwd: string40;end;客户端SendBuffer可用以下方法代替:varrBuf : tidbyt
2、es;CB : TCB;beginrBuf:=RawToBytes(CB,sizeof(CB);TcpClientOHandler.Write(rBuf,sizeof(rBuf); end;ReadBuffer可用以下方法代替: varrBuf : tidbytes;CB : TCB;beginSetLength(rBuf,0);TcpClientOHandler.ReadBytes(rBuf,sizeof(CB);BytesToRaw(rBuf,CB,sizeof(CB);end;服务端procedure TForm2.idtcpsrvr1Execute(AContext:TIdContex
3、t);varrBuf : tidbytes;CB : TCB;beginSetLength(rBuf,0);AContext.Connection.Socket.ReadBytes(rBuf,sizeof(CB); BytesToRaw(rBuf,cb,sizeof(cb);end;procedure TForm2.idtcpsrvr1Execute(AContext:TIdContext);varrBuf : tidbytes;CB : TCB;beginCB.ID:=1;CB.Name := gao;cb.Pwd := 12321; rBuf:=RawToBytes(cb,sizeof(cb);AContext.Connection.Socket.Write(rBuf); end;