var
  pjpg:tjpegimage;
  pic:tmemorystream;
  name,root:string;
begin
  pjpg:=tjpegimage.create;
  pic:=tmemorystream.create;
 with adoquery1 do
  begin
   close;
   sql.Clear;
   sql.Add('select username,image from userzp ');
   open;
   first;
   while not eof do
   begin
  tblobfield(adoquery1.fieldbyname('image')).savetostream(pic);
  pic.Position:=0;
  pjpg.loadfromstream(pic);
  name:=adoquery1.fieldbyname('username').AsString;
  root:=path+'\pic\'+name+'.jpg';
  pjpg.SaveToFile(root);
  adoquery1.Next;
  end;
 end;
 pic.Free;
end;

解决方案 »

  1.   

    pic.clear;
    tblobfield(adoquery1.fieldbyname('image')).savetostream(pic);
      

  2.   

    每导完一张图片,pic的内存流清空一下看看能否解决。
    pic.Clear;
      

  3.   

    调试到adoquery1.Next 时 就报错'Access violation at address 00471A64 in module 'Project1.exe'
    Read of address 0000007C'
      

  4.   

    已经搞定了,谢谢个位大力帮忙!!!
    原来是一时疏忽,简直晕死
    var
     name:string;------------------------
    结帖