TMyBlock=record
  m_username:string[10];
  m_stream:TStream;
  end;
为什么不能传输呀

解决方案 »

  1.   

    你传输什么?代码呢?
    TMyBlock=record
      m_username:string[10];
      m_stream:tmemorystream;//tstream;也是可行的啊。
      end;
      

  2.   

    procedure TClientForm.GrabberBuffer(sender: TObject; SampleTime: Double; pBuffer: Pointer; BufferLen: Integer);
    var
      Stream: TStream;
      MyBlock:TMyBlock;
    begin
      Stream:=TStream.Create;
      MyBlock.m_username:='brucelee';
      try
        if VideoWindow.VMRGetBitmap(Stream) then
        begin
          image.Picture.Bitmap.LoadFromStream(Stream);
          MyBlock.m_stream:=Stream;
        end;
        Grabber.GetBitmap(Image1.Picture.Bitmap);
      finally
      Stream.Free;
      end;  if ConnectForm.TCPClient.Connected then
        begin
          try
            ConnectForm.TCPClient.WriteBuffer(MyBlock,SizeOf(MyBlock),true);
          except
          end;
        end;
    end;
    服务端:
    procedure TServerForm.TCPServerExecute(AThread: TIdPeerThread);
    var
      jpg: TJpegImage;
      MyBlock:TMyBlock;
      getstream:TStream;
    begin
      if AThread.Connection.Connected and not AThread.Terminated then
      begin
        getstream:=TStream.Create;
        AThread.Connection.ReadBuffer(MyBlock,SizeOf(MyBlock));
        listbox1.Items.Add(MyBlock.m_username);
        getstream.CopyFrom(MyBlock.m_stream,SizeOf(MyBlock.m_stream));
        getstream.Position:=0;
        jpg := TJpegImage.Create;
        jpg.LoadFromStream(getstream);
        Image.Picture.Bitmap.Assign(jpg);
        jpg.Free;
        getstream.Free;
      end;
    end;
    为什么服务端收不到?