首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

流操作有关问题,

2012-02-13 
流操作问题,十万火急,在线等//我要把数据库图片的流文件读入内存,然后再从内存读入一个流中,再显示出来var

流操作问题,十万火急,在线等
//我要把数据库图片的流文件读入内存,
    然后再从内存读入一个流中,  
    再显示出来  
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;

给分吧

热点排行