sqlstr:='select  * from tupian where bt= '+chr(39)+RzListView12.Selected.Caption +chr(39);
   with DataModule1.ADOQuery4 do
   begin
      close;
      SQL.Clear;
      SQL.Add(sqlstr);
      open;
      first;
      try
        t_ms:=Tmemorystream.Create;
        t_jpg:=Tjpegimage.Create ;     TBlobField(Fieldbyname('photo')).SaveToStream(t_ms);//将'photo'图片读入到内存流t_ms
        t_ms.size;//为什么是0?    
        t_ms.Position:=0;        t_jpg.LoadFromStream(t_ms) ;
        t_jpg.JPEGNeeded;        Image8.Picture :=nil;
        Image8.Picture.Bitmap.Assign(t_jpg)  ;
      finally
        t_ms.Free;
        t_jpg.Free;
      end;    end;
   DataModule1.ADOQuery4.Close;

解决方案 »

  1.   

    问题一、报错‘JPEG Error #42’,是因为 t_ms.size=0,内存流中没有数据!
    但是为什么TBlobField(Fieldbyname('photo')).SaveToStream(t_ms)不能读出图片。问题二、在另外一个程序中,TBlobField(Fieldbyname('photo')).SaveToStream(t_ms)好像不能连续读数据,比如说要一次性读6张图片,用一个循环来做,第一张图片可以读出来,第二、三、四时,那个内存流的size都是为0,可能最后一个又有数据?很奇怪,这个问题困扰了我几天,一直没有解决,请高手指教!
      

  2.   

    上QQ来
    我的是83039548
    或者MSN:[email protected]