我想用image动态显示access表中字段image的图像,这个字段用的也是LOB类型,但我的代码怎么运行不了!!代码如下:procedure TForm1.DBEdit1Change(Sender: TObject);var
pic:tmemorystream;
jpg:Tjpegimage;
begin
  pic:=tmemorystream.Create;
  jpg:=Tjpegimage.Create;
  try
   with adotable1 do
    begin
    TBlobField(FieldByName('image')).SaveToStream(pic);
    end;
    pic.Position:=0;
    jpg.LoadFromStream(pic);
    Image1.Picture.Bitmap.Assign(jpg);
   finally
    pic.Free;
    jpg.Free;
end;其中有一个错误提示是这样:undeclared identifier:'Tjpegimage'  看了不少资料,人家都是这样定义的,为什么我的就不行?!? 请帮帮我~

解决方案 »

  1.   


    use
      JPEG;
      

  2.   

    加上去有用了~~!!谢谢!
    不过在运行中又弹出个错误:class EJPEG with message'jpeg error #53 '这又要命了~ 这是个什么错误啊~
      

  3.   

    你保存到数据库的图片应该不是.jpg吧?
      

  4.   

    试试用bmp,改成这样procedure TForm1.DBEdit1Change(Sender: TObject); var 
    pic:tmemorystream; 
    bmp:TBitMap; 
    begin 
      pic:=tmemorystream.Create; 
      bmp:=TBitMap.Create; 
      try 
      with adotable1 do 
        begin 
        TBlobField(FieldByName('image')).SaveToStream(pic); 
        end; 
        pic.Position:=0; 
        bmp.LoadFromStream(pic); 
        Image1.Picture.Bitmap.Assign(bmp); 
      finally 
        pic.Free; 
        bmp.Free; 
    end; 
      

  5.   

    class EJPEG with message'jpeg error #53 ' 
    这个错误,是因为你的文件不是Bmp文件
    你判断一下读取的信息的头两个字节,用来判断文件格式
    如果是位图的话,这个值应该是$4D42
    JPG应该是$D8FF
    所以加个判断var
      pic: TMemorystream;
      Buffer:Word;
    begin
    pic:=tmemorystream.Create; 
    TBlobField(adotable1.FieldByName('image')).SaveToStream(pic); 
    pic.seek(0,sofrombeginning);
    pic.read(buffer,2);
    if buffer = $4D42 then
      //直接显示
    else if buffer = $D8FF then
      //JPG转换成BMP然后显示
    else
      //不支持的文件格式
    end;