Entwickler-Ecke
Datenbanken - Bilder landen und Speichern aus Datenbank
Siggus19 - Di 08.04.03 12:19
Titel: Bilder landen und Speichern aus Datenbank
Ich habe da noch ein Problem mit dem Abspeichern und laden von Bildern aus der Datenbank. Ich habe ein Panel auf dem ich per Mausklick ein bild reinladen kann mit hilfe eines open dialog. Er zeigt es mir auch an und speichert es in der Datenbank aber wenn ich es öffnen will bringt er jpeg Fehler #50.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| if imgGlas.Picture.Graphic <> nil then begin JPG := TJPEGImage.Create; Strm := TblobStream.Create(TBlobField(qry.Fieldbyname ('Bild')), bmWrite); JPG.Assign(ImgGlas.picture); JPG.SaveToStream(Strm); qry.Post; jpg.free; strm.Free; end; |
und abruf:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| JPG := TJPEGImage.Create; Strm := TblobStream.Create(TBlobField (qry.Fieldbyname'Bild')), bmRead); JPG.LoadFromStream(Strm); Image := Timage.Create(self); ImgGlas.parent := PImage ; ImgGlas.Tag := qry.FieldByName('ID').asinteger; ImgGlas.Picture.Assign(JPG); ImgGlas.IncrementalDisplay := True; ImgGlas.Stretch := true; Strm.Free; JPG.Free; |
Moderiert von
Klabautermann: Dieses Topic aus dem Thread "Probleme beim löschen von Dynamischen Tabsheets [http://www.delphi-forum.de/viewtopic.php?p=52220]" extrahiert.
LCS - Di 08.04.03 12:36
Vielleicht weil im aktuellen Datensatz gar kein Bild vorhanden ist? Ein welchen Ereignis lädst du das Bild? So mach ich das immer:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TfrmMain.srcDataChange(Sender: TObject; Field: TField); var ms : TMemoryStream; pg : TJpegImage; begin if tblM_BILD.IsNull = False then begin ms := TMemoryStream.Create; pg := TJpegImage.Create; try tblM_BILD.SaveToStream(ms); ms.Position := 0; pg.LoadFromStream(ms); img.Picture.Assign(pg); finally ms.Free; pg.Free; end; end else img.Picture := nil; end; |
Gruss Lothar
Siggus19 - Di 08.04.03 12:49
hier wird es aus der Datenbank gelesen
Quelltext
1: 2:
| Strm := TblobStream.Create(TBlobField(qry.Fieldbyname('Bild')), bmRead); JPG.LoadFromStream(Strm); |
und hier ins image geladen
Quelltext
1:
| ImgGlas.Picture.Assign(JPG); |
gruß alex
LCS - Di 08.04.03 13:00
Argh, mit dem Kopf auf den Tisch schlag. :autsch: Die Codezeilen konnte ich schon interpretieren. Falsch verstanden, egal.
Auf jeden Fall seh ich keine Prüfung, ob in dem betreffenden Feld überhaupt was gespeichert ist. Und wenn du versuchst Daten die gar nicht da sind in ein Image zu laden, dann krachts eben.
Gruss Lothar
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!