Fehler bei Blobfeldern mit Lazarus und SQLITE3

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Antworten
Lorca
Beiträge: 196
Registriert: Di 3. Nov 2020, 12:25

Fehler bei Blobfeldern mit Lazarus und SQLITE3

Beitrag von Lorca »

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

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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

Beitrag von af0815 »

Lorca hat geschrieben:
Di 3. Nov 2020, 12:58
Hat jemand eine Idee was ich falsch mache :? ?
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).

Lorca
Beiträge: 196
Registriert: Di 3. Nov 2020, 12:25

Re: Fehler bei Blobfeldern mit Lazarus und SQLITE3

Beitrag von Lorca »

Hallo af0815,

zunächst danke schön das Du dich gemeldet hast. :D
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

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Fehler bei Blobfeldern mit Lazarus und SQLITE3

Beitrag von theo »

Code wäre besser gewesen.
Vielleicht liegt es schlicht am Bildformat selber? Dass Lazarus damit nichts anfangen kann?
Aber das ist im Bereich Kaffeesatzlesen.

charlytango
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

Beitrag von charlytango »

@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

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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

Beitrag von af0815 »

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.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Lorca
Beiträge: 196
Registriert: Di 3. Nov 2020, 12:25

Re: Fehler bei Blobfeldern mit Lazarus und SQLITE3

Beitrag von Lorca »

Hallo af0815 ,

ganz herzlichen Dank für Deine Hilfe. :D
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. :D


Gruß
Lorca

Lorca
Beiträge: 196
Registriert: Di 3. Nov 2020, 12:25

Re: Fehler bei Blobfeldern mit Lazarus und SQLITE3

Beitrag von Lorca »

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.

Antworten