关于流的问题! ( 积分: 50 )

  • 主题发起人 主题发起人 luuyzhang
  • 开始时间 开始时间
L

luuyzhang

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
Mem ,Mem1: TMemorystream;
Jpg1,Jpg2 : TJpegImage;
PP : Array of byte;
Len : integer;
begin
Mem := TMemoryStream.Create;
Mem1 := TMemoryStream.Create;
Jpg1 := TJpegImage.Create;
Jpg2 := TJpegImage.Create;
Jpg1.Assign(Image1.Picture.Graphic);
Jpg1.SaveToStream(MEM);
Len := Mem.Size;
SetLength(PP,Len);
Mem.Position := 0;
Mem.ReadBuffer(pp,Len);

Mem1.WriteBuffer(PP,Len);
MEM1.Position := 0;
Jpg2.LoadFromStream(MEM1);

Image2.Picture.Graphic := Jpg2;
end;
源程序如上,为什么会提示有问题,怎样才能在Image2中显示出来,请高手指教
 
procedure TForm1.Button1Click(Sender: TObject);
var
Mem ,Mem1: TMemorystream;
Jpg1,Jpg2 : TJpegImage;
PP : Array of byte;
Len : integer;
begin
Mem := TMemoryStream.Create;
Mem1 := TMemoryStream.Create;
Jpg1 := TJpegImage.Create;
Jpg2 := TJpegImage.Create;
Jpg1.Assign(Image1.Picture.Graphic);
Jpg1.SaveToStream(MEM);
Len := Mem.Size;
SetLength(PP,Len);
Mem.Position := 0;
Mem.ReadBuffer(pp,Len);

Mem1.WriteBuffer(PP,Len);
MEM1.Position := 0;
Jpg2.LoadFromStream(MEM1);

Image2.Picture.Graphic := Jpg2;
end;
源程序如上,为什么会提示有问题,怎样才能在Image2中显示出来,请高手指教
 
感觉代码有点乱
PP : Array of byte;
根本就是多余的。
流有在流之间直接拷贝的方法。
 
这样就通过了。刚测试通过
procedure TForm1.Button1Click(Sender: TObject);
var
Mem ,Mem1: TMemorystream;
Jpg1,Jpg2 : TJpegImage;
PP : Array of byte;
Len : integer;
begin Mem := TMemoryStream.Create;
Mem1 := TMemoryStream.Create;
Jpg1 := TJpegImage.Create;
Jpg2 := TJpegImage.Create;
Jpg1.Assign(Image1.Picture.Graphic);
Jpg1.SaveToStream(MEM);
Len := Mem.Size;
SetLength(PP,Len);
Mem.Position := 0;
//Mem.ReadBuffer(pp,Len);

//Mem1.WriteBuffer(PP,Len);
// MEM1.Position := 0;
Jpg2.LoadFromStream(MEM);

Image2.Picture.Graphic := Jpg2;
end;
 
我也知道流和流之间可以直接拷贝,可我现在就是要用TStream.write()和TStream.read()
 
我知道你这样可以,能不能告诉我,我的问题在哪?
 
搂主的代码问题在这:把pp改为pp[0]就行了

Mem.ReadBuffer(pp[0],Len);
Mem1.WriteBuffer(PP[0],Len);
 
多人接受答案了。
 
后退
顶部