Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Frage zu Firebird Blob und Image

  Alt 1. Jul 2008, 08:29
Moin, da fallen mir zwei Dinge auf:

Die Position im Stream muss auf 0 zurück gesetzt werden.
Eventuell musst du dich vergewissern, dass Graphic.SaveToStream() auch wirklich im JPEG-Format schreibt.

Delphi-Quellcode:
type
  TDemoForm = class(TForm)
    // ...
    SaveBtn: TButton;
    Image: TImage;
    Database: TIBDatabase;
    taDefault: TIBTransaction;
    Q: TIBQuery;
    // ...
    procedure SaveBtnClick(Sender: TObject);
  private
    photo: TJpegImage;
    // ...
  end;

{ --- }

function ibSaveJpeg(q: TIBQuery; const paramName: string; jpeg: TJpegImage): Boolean;
var
  s: TStream;
begin
  s := TMemoryStream.Create;
  jpeg.SaveToStream(s);
  s.Position := 0;
  q.ParamByName(paramName).LoadFromStream(s, TBlobType(0));
end;

procedure TDemoForm.SaveBtnClick(Sender: TObject);
begin
  Q.SQL.Text := 'INSERT INTO contacts(id, photo) VALUES(123, :photo)';
  ibSaveJpeg(Q, 'photo', photo);
  Q.ExecSQL;
  taDefault.CommitRetaining;
end;
Freundliche Grüße
  Mit Zitat antworten Zitat