Fehler bei Blobfeldern mit Lazarus und SQLITE3
Fehler bei Blobfeldern mit Lazarus und SQLITE3
Hallo,
Wenn jemand helfen könnte würde ich mich sehr freuen.
Ich arbeite mit Lazarus 2.0.1 und verwende SQLITE3 als DB.
Die Daten habe ich provisorisch mit SQLiteStudio 3.2.1 eingepflegt.
Für den Zugriff innerhalb von Lazarus verwende ich die ZEOS Komponenten.
Mein Programm (mit Lazarus erstellt) funktioniert wunderbar wenn in der Tabelle keine Bilder enthalten sind.
Mit einem Bild in einem Datensatz wird jedoch die Ausnahme: EReadError geworfen. Die Meldung dazu: Stream read error
Das Bild habe ich provisorisch mit SQLiteStudio problemlos eingepflegt
Die Daten werden über TDBGrid ausgegeben. Das Bild über TDBImage
Mein SQL: Select ID, Name, Bild from datatab
Felddefinitionen:
ID : Integer
Name : String[100]
Bild : Blob
Hat jemand eine Idee was ich falsch mache ?
Viele Grüße
Lorca
Wenn jemand helfen könnte würde ich mich sehr freuen.
Ich arbeite mit Lazarus 2.0.1 und verwende SQLITE3 als DB.
Die Daten habe ich provisorisch mit SQLiteStudio 3.2.1 eingepflegt.
Für den Zugriff innerhalb von Lazarus verwende ich die ZEOS Komponenten.
Mein Programm (mit Lazarus erstellt) funktioniert wunderbar wenn in der Tabelle keine Bilder enthalten sind.
Mit einem Bild in einem Datensatz wird jedoch die Ausnahme: EReadError geworfen. Die Meldung dazu: Stream read error
Das Bild habe ich provisorisch mit SQLiteStudio problemlos eingepflegt
Die Daten werden über TDBGrid ausgegeben. Das Bild über TDBImage
Mein SQL: Select ID, Name, Bild from datatab
Felddefinitionen:
ID : Integer
Name : String[100]
Bild : Blob
Hat jemand eine Idee was ich falsch mache ?
Viele Grüße
Lorca
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Fehler bei Blobfeldern mit Lazarus und SQLITE3
Ja, keinen Code gepostet. Ein kleines Beispiel, das man kompilieren kann (ohne den Bibliotheken, binaries etc. bewirkt oft Wunder)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Fehler bei Blobfeldern mit Lazarus und SQLITE3
Hallo af0815,
zunächst danke schön das Du dich gemeldet hast.
Eigentlich gibt es nicht viel Coding. Das meiste ist in der IDE über den Objektinspector eingestellt.
Ich habe jedoch hier ein paar snap shots, die vllt. meinen Fehler erkennen lassen.
Ich Danke Dir sehr für Deine Hilfe.
SQLite Einstellung der Tabelle: https://ibb.co/rMT9LWV
Oberfläche der Form: https://ibb.co/yY1GgjB
Coding der Form: https://ibb.co/1nMp3Z7
Coding Datamodul für ZEOS Connection (Die zugehörige Datasource ist im Objektinspector mit der Query verbunden)
https://ibb.co/47SncrG
Objektinspector Einstellung zum TDBImage Feld: https://ibb.co/R464Vp3
zunächst danke schön das Du dich gemeldet hast.
Eigentlich gibt es nicht viel Coding. Das meiste ist in der IDE über den Objektinspector eingestellt.
Ich habe jedoch hier ein paar snap shots, die vllt. meinen Fehler erkennen lassen.
Ich Danke Dir sehr für Deine Hilfe.
SQLite Einstellung der Tabelle: https://ibb.co/rMT9LWV
Oberfläche der Form: https://ibb.co/yY1GgjB
Coding der Form: https://ibb.co/1nMp3Z7
Coding Datamodul für ZEOS Connection (Die zugehörige Datasource ist im Objektinspector mit der Query verbunden)
https://ibb.co/47SncrG
Objektinspector Einstellung zum TDBImage Feld: https://ibb.co/R464Vp3
Re: Fehler bei Blobfeldern mit Lazarus und SQLITE3
Code wäre besser gewesen.
Vielleicht liegt es schlicht am Bildformat selber? Dass Lazarus damit nichts anfangen kann?
Aber das ist im Bereich Kaffeesatzlesen.
Vielleicht liegt es schlicht am Bildformat selber? Dass Lazarus damit nichts anfangen kann?
Aber das ist im Bereich Kaffeesatzlesen.
-
- Beiträge: 843
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Fehler bei Blobfeldern mit Lazarus und SQLITE3
@lorca
af0815 meinte ein kleines komplettes Programm, das im Idealfall nur diesen einen Fehler herausgreift.
In deinem Fall vielleicht nur das Datamodule und eine Form mit einer rudumentären Eingabe.
Vielleicht noch die SQLite-DB (reduziert auf das wesentliche)
Dann kann sich jemand dieses Programm kompilieren und ggfs auch im Debugger ansehen.
Nur Fotos sind einfach zuwenig, da bekommst du keine qualifizierte Antwort
af0815 meinte ein kleines komplettes Programm, das im Idealfall nur diesen einen Fehler herausgreift.
In deinem Fall vielleicht nur das Datamodule und eine Form mit einer rudumentären Eingabe.
Vielleicht noch die SQLite-DB (reduziert auf das wesentliche)
Dann kann sich jemand dieses Programm kompilieren und ggfs auch im Debugger ansehen.
Nur Fotos sind einfach zuwenig, da bekommst du keine qualifizierte Antwort
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Fehler bei Blobfeldern mit Lazarus und SQLITE3
Anhand der Informationen habe ich folgendes gefunden:
https://wiki.lazarus.freepascal.org/Laz ... s#TDBImage
https://forum.lazarus.freepascal.org/in ... pic=2176.0
Die Frage ist, ob der BLOB so wie er in der DB ist, auch für Lazarus lesbar ist.
Mit dem zweiten Link oben, könnte man einmal den Stream aus der DB laden und den entweder anzeigen oder in eine Datei schreiben und mal sehen was wirklich ankommt. Weil Bild ist nicht gleich Bild und wie das genau eingepflegt wird, ist ja auch nicht definiert, vor allem das Format. Da gab es schon unterschiede zwischen Lazarus und einem anderen Produkt. Es ist ja auch nicht definiert welches Bildformat verwendet wurde.
BTW: Bilder bei irgendeinem Hoster sind von mir absolut nicht gerne gesehen - die verschwinden nach einiger Zeit und der Thread ist für suchende unbrauchbar, weil keiner mehr sich ansehen kann, was da gezeigt wurde. Es gibt nur eine Wahrheit -> Code für Tests.
Nebenbei verschwinden viele Fehler, wenn man einen Testcode erstellt. Ist das Problem komplett eingegrenzt, sieht man es oft selbst.
https://wiki.lazarus.freepascal.org/Laz ... s#TDBImage
https://forum.lazarus.freepascal.org/in ... pic=2176.0
Die Frage ist, ob der BLOB so wie er in der DB ist, auch für Lazarus lesbar ist.
Mit dem zweiten Link oben, könnte man einmal den Stream aus der DB laden und den entweder anzeigen oder in eine Datei schreiben und mal sehen was wirklich ankommt. Weil Bild ist nicht gleich Bild und wie das genau eingepflegt wird, ist ja auch nicht definiert, vor allem das Format. Da gab es schon unterschiede zwischen Lazarus und einem anderen Produkt. Es ist ja auch nicht definiert welches Bildformat verwendet wurde.
BTW: Bilder bei irgendeinem Hoster sind von mir absolut nicht gerne gesehen - die verschwinden nach einiger Zeit und der Thread ist für suchende unbrauchbar, weil keiner mehr sich ansehen kann, was da gezeigt wurde. Es gibt nur eine Wahrheit -> Code für Tests.
Nebenbei verschwinden viele Fehler, wenn man einen Testcode erstellt. Ist das Problem komplett eingegrenzt, sieht man es oft selbst.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Fehler bei Blobfeldern mit Lazarus und SQLITE3
Hallo af0815 ,
ganz herzlichen Dank für Deine Hilfe.
Ich habe, wie in deinem Link angegeben, in der Methode (Ereignis) : TDBONImageread das Feld Graphext auf 'png' gesetzt und nun funzt es.
Ich kannte weder dieses Ereignis noch hatte ich eine Ahnung das dies Dateityp abhängig sein könnte.
Da ich gerade erst mit Lazarus und SQLite anfange. Bei Paradox Tabellen (vor vielen Jahren), kann ich mich nicht erinnern dort eine Datei-Typen abhängige Funktion gehabt zu haben.
Mit den Bildern hast Du recht, SRY. Beim nächsten mal sehe ich zu das es ein reines coding wird.
Gruß
Lorca
ganz herzlichen Dank für Deine Hilfe.
Ich habe, wie in deinem Link angegeben, in der Methode (Ereignis) : TDBONImageread das Feld Graphext auf 'png' gesetzt und nun funzt es.
Ich kannte weder dieses Ereignis noch hatte ich eine Ahnung das dies Dateityp abhängig sein könnte.
Da ich gerade erst mit Lazarus und SQLite anfange. Bei Paradox Tabellen (vor vielen Jahren), kann ich mich nicht erinnern dort eine Datei-Typen abhängige Funktion gehabt zu haben.
Mit den Bildern hast Du recht, SRY. Beim nächsten mal sehe ich zu das es ein reines coding wird.
Gruß
Lorca
Re: Fehler bei Blobfeldern mit Lazarus und SQLITE3
Hallo charlytango,
auch Dir danke für Deinen Einsatz.
Ja, Du hast recht, ich werde mich bessern
Diesmal habe ich glück gehabt, das af0815 die richtige Idee mit dem Link hatte. Ich selber habe den nicht gefunden, obwohl ich sehr lange gesucht und geforscht hatte.
Herzlichen dank an euch beide.
auch Dir danke für Deinen Einsatz.
Ja, Du hast recht, ich werde mich bessern
Diesmal habe ich glück gehabt, das af0815 die richtige Idee mit dem Link hatte. Ich selber habe den nicht gefunden, obwohl ich sehr lange gesucht und geforscht hatte.
Herzlichen dank an euch beide.