我定义了一个动态数组s:Array of Btye,请问能把流AData:TStream付给动态数组s吗
我用SetLength(s,AData.Size);AData.Read(s,AData.Size),好像不行

解决方案 »

  1.   

    TStream是抽象类,不能创建自己的实例,只可创建其派生类的实例。
    AData := TMemoryStream.Create;
      

  2.   

    try
      AData := TMemoryStream.Create;
      SetLength(s,AData.Size);
      AData.Read(s,AData.Size);
    ......
    finally
      AData.free;
    end;
      

  3.   

    我是用indy控件的
    procedure TFrmMain.UDPServer_VehicleUDPRead(Sender: TObject;
      AData: TStream; ABinding: TIdSocketHandle);
    var
       s:Array of byte;
    begin
       SetLength(s,AData.Size);
       AData.Read(s,AData.size);
    end;
    好像不行
      

  4.   

    我定义了一个动态数组s:Array of Btye,请问能把流AData:TStream付给动态数组s吗
    我用SetLength(s,AData.Size);AData.Read(s,AData.Size),好像不行
    不行是因为你的范围搞错了
    setLengths,Adata.size+1);
    Adata.read(s,Adata.Size);
      

  5.   

    var
      s:array of byte;
      aStream:TStream;
    begintry
      aStream := TMemoryStream.Create;
    ......  SetLength(s,aStream.Size);
      aStream.Read(pByte(s)^,aStream.Size);finally
      aStream.free;
    end;