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里
Jpg := Tjpegimage.Create;
Jpg.Assign(Image1.Picture.Graphic);
Jpg.SaveToStream(Ms);
Ms.Position := 0;
-- arraybye :array of byte;
将TMemoryStream 读入到一个byte反之,怎样将byte读入到TmemoryStream里
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;
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;
谢谢,你的答案测试已通过,现有:
如果我想在Ms.ReadBuffer(arraybye[0], Ms.size)之前,先给arraybye加12个字节的包头,那该怎样,可不可以将TmemoryStream直接加包头
SetLength(arraybye, Ms.size+12);
//将流写入数组
Ms.ReadBuffer(arraybye[12], Ms.size);然后你把arraybye[0]到arraybye[11]写上头就行了当然你也可以把头放在流的最前面,这样一次性就全复制过来了