代码如下:
procedure TForm1.Button2Click(Sender: TObject);
var
  comm:Tcommblock;
begin
comm.SenderName:=edit4.Text;
comm.Msg:=edit5.Text;
memo1.Lines.Add(comm.SenderName+':'+comm.Msg);
idudpclient1.SendBuffer(RawToBytes(comm,sizeof(comm)));
end;procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
  const AData: array of Byte; ABinding: TIdSocketHandle);
var
  comm:TCommBlock;
begin
BytesToRaw(AData,comm,SizeOf(Tcommblock));//在这个位置提示错误信息:{unit1.pas(80,17) Error: Incompatible type for arg no. 1: Got "Open Array Of Byte", expected "TIdBytes"}memo1.lines.add(comm.SenderName+':'+comm.Msg);
end;end. 请问怎么改正啊!             

解决方案 »

  1.   

    先定义一个TIdBytes类型的变量buf,把AData读到变量buf中,再用BytesToRaw
      

  2.   

    你怎么把9的例子放到10来学习?
    var
      Buf: TDataPack;
      BByte: TIdBytes;begin
    AContext.Connection.IOHandler.ReadBytes(BByte, SizeOf(Buf), False);
    BytesToRaw(BByte, Buf, SizeOf(Buf));
      

  3.   

    indy10如果是用idtcpclient还是不用为好。我们做音视频传输,视频单向,音频双向,很容易数据出问题,通过几款抓包软件看设备过来的数据都是正常的。但client出来的数据就是不正常。后来用tcpclient就没问题了。