Seite 1 von 1

Blob Fehlermeldung bei dem Bsp aus dem Englischen Forum

Verfasst: 13.06.2009 09:10
von AddMe
Hallo Zusammen,

ich hatte versucht das Beispiel aus dem Englischen Forum zu verwenden.

http://www.purebasic.fr/english/viewtop ... &start=105

Das Bsp. funktioniert so wie es ist, jedoch wenn ich z. B. ein jpg Bild nehme, speichert er es in eine SQlite DB aber beim extract blob gibt es folgende Fehlermeldung:

Code: Alles auswählen

EnableExplicit

;XIncludeFile "SQLite3.pbi"

Define Mem, File, Size, hDB, lStatement

hDB = OpenDatabase(#PB_Any, "c:\logo.db", "", "")
If hDB = #False
  Debug "Can't open database"
  End
EndIf

lStatement = SQLitePrepare(hDB, "Select fldBlob From tblBlob")

If lStatement
  SQLiteStep(lStatement)
  Size = SQLiteColumnByte(lStatement, 0)
  Mem = SQLiteColumnBlob(lStatement, 0)
  If Mem
;     File = CreateFile(#PB_Any, "logo.bmp")
;     If File
;       WriteData(File, Mem, Size)
;       CloseFile(File)
;     EndIf
    CatchImage(0, Mem)
    OpenWindow(0, #PB_Ignore, #PB_Ignore, ImageWidth(0), ImageHeight(0), "blob - example")    <== FEHLERMELDUNG
    ImageGadget(0, 0, 0, ImageWidth(0), ImageHeight(0), ImageID(0))
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
  SQLiteFinalize(lStatement)
EndIf
CloseDatabase(hDB) 
Die Fehlermeldung lautet: The specified #Image ist not initialized

Wäre toll, wenn mir jemand erklären könnte, was ich da falsch mache, oder was ich machen muss, damit es geht.

Wie geschrieben, ich habe nur das Beispiel so genommen wie es ist und nur anstatt eines bmp Bildes ein jpg Bild genommen.

Schon mal vielen Dank für die Hilfe.

Gruß
Michael

Verfasst: 13.06.2009 09:19
von X360 Andy
UseJPEGImageDecoder() dürfte aushelfen.

Verfasst: 13.06.2009 09:22
von AddMe
Hallo X360 Andy,
X360 Andy hat geschrieben:UseJPEGImageDecoder() dürfte aushelfen.
oh super vielen Dank für Deine Hilfe. Es funktioniert. :D
Da wäre ich nun nie drauf gekommen. :cry:

Nochmals vielen Dank.

Gruß
Michael

Verfasst: 13.06.2009 09:48
von Little John
AddMe hat geschrieben:Da wäre ich nun nie drauf gekommen. :cry:
Um besser zu verstehen was ein kopierter Code eigentlich macht, lohnt es sich wirklich in der Hilfe nachzulesen, wie unbekannte Befehle funktionieren. Du wirst dadurch viel mehr und viel schneller lernen, als wenn Du diesen Teil überspringst -- auch wenn es am Anfang evtl. lästig erscheinen mag.

In diesem Fall, wenn man den Cursor auf CatchImage() setzt und dann [F1] drückt, liest man u.a.
Die folgenden Befehle können zum Aktivieren weiterer Bildformate benutzt werden:
UseJPEGImageDecoder()
UseJPEG2000ImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()
UseTGAImageDecoder()
Diese Anmerkung ist nicht böse gemeint, sondern als Tipp gedacht der helfen soll, sich fundiertes Wissen über PureBasic anzueignen.

Gruß, Little John

Verfasst: 13.06.2009 10:10
von AddMe
Hallo LittleJohn,

Vielen Dank für Deine Antwort.
Little John hat geschrieben:Diese Anmerkung ist nicht böse gemeint, sondern als Tipp gedacht der helfen soll, sich fundiertes Wissen über PureBasic anzueignen.
Gruß, Little John
Ich finde es super, dass du mir diesen Hinweis gibst.
Ich habe danach gesucht, warum etwas nicht initialized sein könnte.
Tja, als Anfänger sucht man wohl immer oder oft an der falschen Stelle.

Nächstes mal werde ich es, dank deiner Hilfe, hoffentlich finden.

Gruß
Michael

Verfasst: 13.06.2009 17:12
von Andesdaf
F1 ist eben dein Bester Freund :wink: