总是在从DBF文件中读出JPEG图片时出问题,JPEG ERROR #50?!我可是用TBLOBFIELD.LOADFROMFILE()的方法直接保存JPEG图片的.//读取已保存的JPEG图片
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
var
  tmp: tblobstream;tmpjpg: tjpegimage;
begin
  if not tblobfield(table1.fieldbyname('photo')).IsNull then
    begin
    tmp:=TBlobStream.Create(TBlobField(Table1.FieldbyName('photo')), bmRead);
    tmpjpg:= TJPEGImage.Create;
    tmp.Position:=0;
    //下面这句出错 JPEG ERROR #50
    tmpjpg.LoadFromStream(tmp);
    Image1.Picture.Assign(tmpjpg);
    tmp.free;
    tmpjpg.free;
  end
else
  image1.picture:=nil;end;//查找JPEG图片并用TIMAGE显示
procedure TForm1.Button1Click(Sender: TObject);
begin
  if openpicturedialog1.Execute then
    begin
    image1.Picture.LoadFromFile(openpicturedialog1.filename);
    button2.enabled:=true;
    end;
end;//保存JPEG图片
procedure TForm1.Button2Click(Sender: TObject);
var
  tmp: tmemorystream;
begin
  tmp:=tmemorystream.create;
  tmp.LoadFromFile(openpicturedialog1.filename);
  tmp.position:=0;
  table1.Edit;
  tblobfield(table1.FieldByName('photo')).LoadFromstream(tmp);
  tmp.free;
end;

解决方案 »

  1.   

    temp: TStringStream;
    tmp:=TBlobStream.Create(TBlobField(Table1.FieldbyName('photo')), bmRead);
     改一下;
    temp := TStringStream.Create('');
    TBlobField(TABLE1.FieldByName('PHOTO')).SaveToStream(temp);
      

  2.   

    table1.Edit;
      tblobfield(table1.FieldByName('photo')).LoadFromstream(tmp);
    table1.post;////////没有保存
      tmp.free;
    end;
      

  3.   

    tmp2: TStream; tmp2:= Table1.CreateBlobStream(Table1.FieldByName('photo'), bmReadWrite);
        try
          tmp2.CopyFrom(tmp, tmp.Size);
          Table1.Post;
        finally
          tmp2.Free;
        end;