Après avoir travaillé les blob avec des images (logo et fond) sous sqlite, je cherche vainement à transférer mon programme sous postgreSQL pour le mettre en réseau. Or il semble que l'image ne soit pas sauvegardée dans la base. Le fichier en retour est vide. Y a t il une limite avec les jpg et le format bytea ? J'ai essayé avec catchimage et le transfert direct dans un fichier sans succès.
Code : Tout sélectionner
Procedure EcrireLogo()
Image.s = Chemin+"Couvertures\S_Couverture.jpg"
SetGadgetText(#Text_0, "Couverture")
SetGadgetText(#Text_1, "Lecture fichier image")
LoadImage(#Image_1, Image)
SetGadgetState(#Image_0, ImageID(#Image_1))
TailleImage=FileSize(Image)
*buffer=AllocateMemory(TailleImage)
ReadFile(#File_0,Image)
ReadData(#File_0,*buffer,TailleImage)
CloseFile(#File_0)
SetGadgetText(#Text_1, "Ecriture PgSQL")
SetDatabaseBlob(#Base_0,0,*buffer,TailleImage)
If DatabaseUpdate(#Base_0, "INSERT INTO image(titre,image) VALUES ('Couverture', $1 );")=0
Debug DatabaseError()
EndIf
FreeMemory(*buffer)
FinishDatabaseQuery(#Base_0)
EndProcedure
Procedure LireBase()
DatabaseQuery(#Base_0,"SELECT image FROM image WHERE titre = 'Couverture';")
NextDatabaseRow(#Base_0)
picsize = DatabaseColumnSize(#Base_0,0)
*blobreadbuffer = AllocateMemory(picsize)
GetDatabaseBlob(#Base_0, 0, *blobreadbuffer, picsize)
; If CatchImage(#Image_1, *blobreadbuffer,picsize)
; SetGadgetState(#Image_0, ImageID(#Image_1))
; Else
; MessageRequester("Erreur","",0)
; EndIf
;EndIf
;MessageRequester("0k","",0)
;FinishDatabaseQuery(#Base_0)
Image2.s=Chemin+"Couvertures\S2_Couv.jpg"
CreateFile(#File_0,Image2.s)
WriteData(#File_0,*buffer,PictureSize)
CloseFile(#File_0)
FreeMemory(*blobreadbuffer)
FinishDatabaseQuery(#Base_0)
EndProcedure