Ich hab folgenden Code um aus der Datenbank ein Blobfeld auszulesen und die dort gespeicherte Datei auf Platte zu schreiben.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure Tmain.erzeuge_file(filename:String;mailid:Integer); var xs:TFilestream; bs:TBlobstream; begin deletefile(filename); with qry_anhang do begin close; sql.clear; sql.add('SELECT DATEI "datei" FROM DB.EMAIL_VERSAND '); sql.add(' WHERE LFDNR = :p_LFDNR'); ParamByName('p_LFDNR').asInteger := mailid; end; qry_anhang.Open; bs := TBlobstream.Create(TBlobfield(qry_anhang.FieldByName('datei')),bmread); xs := TFileStream.Create(filename,fmCreate); xs.CopyFrom(bs,0); xs.Free; bs.Free; end; |
Der funktioniert aber irgendwie nicht ganz. Er speichert immer nur die ersten 32 KB. Sprich, ist das File in der DB kleiner als 32 KB funtioniert der Code, ist das File im Blobfeld größer hab ich pech

Ich denke es ist ein kleines Detailproblem, allerdings steh ich total auf dem Schlauch im Moment.
mfg. Joel