zu meinem Problem, Ich kann zwar problemlos ein Bild in die SQLite DB schreiben, dieses aber nicht mehr auslesen. Zwar zeigt mir der Returnwert von GetDatabaseBlob() eine 1 an, aber Buffer und Size sind 0.
Der Vollständigkeit halber:
PureBasic Version 4.6
Code: Alles auswählen
Structure BildDaten
\Buffer.l
\Size.l
EndStructure
Etikett.BildDaten
Code: Alles auswählen
strTMP.s = OpenFileRequester("Lade Etikett 1","*.jpg","Bild Dateien|*.jpg;*.png;*.tif",0) ;Bild Datei laden
ReadFile(#Etikett,strTMP.s) ; Bildinformation lesen
Etikett\Size = Lof(#Etikett) ; Bildgröße ermitteln
Etikett\Buffer = AllocateMemory(Etikett\Size) ; Speicher reservieren
ReadData(#Etikett,Etikett\Buffer,Etikett\Size) ; Daten in den Speicher schreiben
CloseFile(#Etikett) ; Bild Datei schließen
CatchImage(#EtikettImage,Etikett\Buffer) ; Bild vom Speicher lesen
IWidth = ImageWidth(#EtikettImage) ; Bildbreite ermitteln
IHeight = ImageHeight(#EtikettImage) ; Bildhöhe ermitteln
Ratio.f = IWidth/IHeight ; Seitenverhältnis ermitteln
ResizeImage(#EtikettImage,295,295/Ratio) ; Bild mit korrektem Seitenverältnis darstellen
SetGadgetState(#Image_Etikett,ImageID(#EtikettImage)) ; Bild in ImageGadget schreiben
SetDatabaseBlob(#Database,0,Etikett\Buffer,Etikett\Size) ; Blob Information schreiben
DatabaseQuery(#Database,"UPDATE Produkte SET Etikett1=? WHERE ID=1") ; Blob in Datenbank schreiben
FreeMemory(Etikett\Buffer) ; Speicher wieder freigeben.
Code: Alles auswählen
DatabaseQuery(#Database,"SELECT * FROM Produkte WHERE ProdID=1") ;Richtigen Datensatz herausfischen
NextDatabaseRow(#Database)
With Etikett ; etwas für Schreibfaule
intTMP = GetDatabaseBlob(#Database,39,\Buffer,\Size) ; Blob aus DB auslesen
If intTMP > 0 And \Buffer > 0 And \Size > 0 ; Nur wenn erfolgreich gelesen weiter
CatchImage(#EtikettImage,\Buffer) ; Bild aus Speicher lesen
IWidth = ImageWidth(#EtikettImage) ; Bildbreite ermitteln
IHeight = ImageHeight(#EtikettImage) ; Bildhöhe ermitteln
Ratio.f = IWidth/IHeight ; Seitenverhältnis ermitteln
ResizeImage(#EtikettImage,295,295/Ratio) ; Bild im korrekten Seitenverhältnis darstellen
SetGadgetState(#Image_Etikett,ImageID(#EtikettImage)) ; Bild ins Image Gadget schreiben
FreeMemory(\Buffer) ; Speicher wieder freigeben
EndIf
EndWith
Etikett\Buffer = 0
Etikett\Size = 0 (wohl doch nicht erfolgreich geladen !?)
Im Moment sehe ich nicht wo ich etwas falsch gemacht haben könnte.
Hat jemand eine Idee ?
Vielen Dank schon einmal für hilfreiche Kommentare