ms := TmemoryStream.Create;
Jpg := Tjpegimage.Create;
Jpg.Assign(Image1.Picture.Graphic);
Jpg.SaveToStream(Ms);
Ms.Position := 0;
-- arraybye :array of byte;
将TMemoryStream 读入到一个byte反之,怎样将byte读入到TmemoryStream里

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      ms: TmemoryStream;
      arraybye: array of Byte;
      Jpg: Tjpegimage;
    begin
      ms := TmemoryStream.Create;
      Jpg := Tjpegimage.Create;
      Jpg.Assign(Image1.Picture.Graphic);
      Jpg.SaveToStream(Ms);
      Ms.Position := 0;
      SetLength(arraybye, Ms.size);
      //写入数据
      Ms.ReadBuffer(arraybye[0], Ms.size);
      //将数组写入流
      Ms.Clear;
      Ms.WriteBuffer(arraybye[0], Length(arraybye));
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      ms: TmemoryStream;
      arraybye: array of Byte;
      Jpg: Tjpegimage;
    begin
      ms := TmemoryStream.Create;
      Jpg := Tjpegimage.Create;
      Jpg.Assign(Image1.Picture.Graphic);
      Jpg.SaveToStream(Ms);
      Ms.Position := 0;
      SetLength(arraybye, Ms.size);
      //将流写入数组
      Ms.ReadBuffer(arraybye[0], Ms.size);
      //将数组写入流
      Ms.Clear;
      Ms.WriteBuffer(arraybye[0], Length(arraybye));
    end;
      

  3.   

    to :madyak(无天) ( ) 信誉:120 
    谢谢,你的答案测试已通过,现有:
    如果我想在Ms.ReadBuffer(arraybye[0], Ms.size)之前,先给arraybye加12个字节的包头,那该怎样,可不可以将TmemoryStream直接加包头
      

  4.   

    这样比较方便
      SetLength(arraybye, Ms.size+12);
      //将流写入数组
      Ms.ReadBuffer(arraybye[12], Ms.size);然后你把arraybye[0]到arraybye[11]写上头就行了当然你也可以把头放在流的最前面,这样一次性就全复制过来了
      

  5.   

    如果我要将arraybye每64个字节存放成一个array of byte?