读书人

流操作有关问题

发布时间: 2012-02-13 17:20:26 作者: rapoo

流操作问题,十万火急,在线等
//我要把数据库图片的流文件读入内存,
然后再从内存读入一个流中,
再显示出来
var
SqlLug:String;
mStream,mStream1:TMemoryStream;
lBufSize: Integer;
sockRequest : TSocket;
lpBuf: PChar;
i:integer;
JpgFile:TjpegImage;
begin
mStream:=TMemoryStream.Create ;
TBlobField(ADOQ_Photo.FieldByName( 'pic ')).SaveToStream(mStream)
lBufSize:=mStream.Size;
mStream.Read(lpBuf^, lBufSize);//这里是不是有错误???
mStream1.Write(lpBuf^, lBufSize);//这里是不是有错误???
mStream1.Position :=0;
JpgFile:=TjpegImage.Create ;
jpgfile.LoadFromStream(MStream1);
image1.Picture.Assign(JpgFile);
end

[解决办法]
var tempstream:TStringStream;
tempjpeg:TJPEGImage;
ms:TMemoryStream;
lBufSize:Pchar;
begin
try
self.ADODataSet1.Close;
self.ADODataSet1.CommandText:= 'select * from epbms.vio_jdczp where xh= ' '4117072007013692 ' ' ';
self.ADODataSet1.Open;
ms:= TMemoryStream.Create;
tempstream:=TStringStream.Create( ' ');
TBlobField(ADODataSet1.FieldByName( 'photo1 ')).SaveToStream(tempstream);
tempstream.Position:=0;
Getmem(lbufsize, tempStream.size);//注意这里
tempstream.Read( lbufsize^,tempStream.size );
ms.Position:=0;
ms.Write( lbufsize^, tempStream.size );
ms.Position:=0;
tempjpeg:=TJPEGImage.Create;
tempjpeg.LoadFromStream(ms);
self.Image1.Picture.Bitmap.Assign( tempjpeg );
finally
Freemem( lbufsize );
tempstream.Free;
tempjpeg.Free;
ms.Free;
end;
end;

给分吧

读书人网 >.NET

热点推荐