在Delphi7版本中IdUDPServer的UDPServerUDPRead过程是这样的:
procedure TFrm_UDPServer.UDPServerUDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var
  DataStringStream: TStringStream;
  s: String;
begin
  DataStringStream := TStringStream.Create('');
  try
    DataStringStream.CopyFrom(AData, AData.Size);
    s := DataStringStream.DataString;
end;
而在Delphi2006版中却成了这样:
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
  ABinding: TIdSocketHandle);
两处中AData的定义类型不一样了,D7是TStream,在D2006却成了TBytes类型,那样DataStringStream.CopyFrom(AData, AData.Size);的使用就有问题了,想问一下要实现同样的D7种的接受数据,在D2006中该怎么实现阿?

解决方案 »

  1.   

    没装2006,不知道,没有帮助吗?
    再说,到网上搜搜看有没有demo
      

  2.   

    procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
      ABinding: TIdSocketHandle);
    var
        s: String;
    begin
      s:=PChar(@AData);
      

  3.   

    这样
    procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
      ABinding: TIdSocketHandle);
    var
        s: String;
    begin
      s:=PChar(@AData[0]);
      

  4.   

    indy 9.0.50之后就改成这个样子了,当初我也是因为这样不想改代码放弃升级.
      

  5.   

    我遇上类似情况,想了想...
    还是接受了新些版本的INDY..