Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
celtic88
Messages : 309 Inscription : sam. 12/sept./2015 14:31
Localisation : Alger
Message
par celtic88 » sam. 12/sept./2015 16:12
Slt tout le monde
quelqu'un peut me dir pourquoi je reçois cette error : "Syntex error"
Code : Tout sélectionner
Structure Resourceinfo
*Bufferfile
Filesize.i
EndStructure
Define Superimage.Resourceinfo
Procedure _GetResource(hGetModuleHandle,Resinfo.Resourceinfo,ResName.s)
Protected FindRs=FindResource_(hGetModuleHandle,ResName,10)
Resinfo\Filesize=SizeofResource_(hGetModuleHandle,FindRs)
Protected LoadRs=LoadResource_(hGetModuleHandle,FindRs)
*Resinfo\Bufferfile=LockResource_(LoadRs)
EndProcedure
.....i Love Pb
falsam
Messages : 7324 Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :
Message
par falsam » sam. 12/sept./2015 16:18
Bonjour et bienvenu Celtic.
de cette maniere peut être ?
Code : Tout sélectionner
Structure Resourceinfo
*Bufferfile
Filesize.i
EndStructure
Define Superimage.Resourceinfo
Procedure _GetResource(hGetModuleHandle, *Resinfo.Resourceinfo,ResName.s)
Protected FindRs=FindResource_(hGetModuleHandle,ResName,10)
*Resinfo\Filesize=SizeofResource_(hGetModuleHandle,FindRs)
Protected LoadRs=LoadResource_(hGetModuleHandle,FindRs)
*Resinfo\Bufferfile=LockResource_(LoadRs)
EndProcedure
Tuto sur les structures dans lequel il est indiqué comment passer une structure dans une procédure.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
nico
Messages : 3702 Inscription : ven. 13/févr./2004 0:57
Message
par nico » sam. 12/sept./2015 16:49
Oui, tu ne peux pas mettre de variable structurée dans les fonctions, il faut que ce soit des pointeurs, d'où la modification de Falsam: Resinfo.Resourceinfo par *Resinfo.Resourceinfo.
Donc il faudra pour ce paramètre de la fonction passer une adresse.
celtic88
Messages : 309 Inscription : sam. 12/sept./2015 14:31
Localisation : Alger
Message
par celtic88 » sam. 12/sept./2015 16:52
et ca marche
, merci bcp pour ton aide comme tu vois je suis debutant dans cette merrveilleux langage je tien a féliciter son createur <3
.....i Love Pb
celtic88
Messages : 309 Inscription : sam. 12/sept./2015 14:31
Localisation : Alger
Message
par celtic88 » sam. 12/sept./2015 17:01
je vais utiliser ce code comme ça esque j ai pas tort
Code : Tout sélectionner
Structure Resourceinfo
*Bufferfile
Filesize.i
EndStructure
Define MasuperImage.Resourceinfo
Procedure _GetResource(hGetModuleHandle,*Resinfo.Resourceinfo,ResName.s)
Protected FindRs=FindResource_(hGetModuleHandle,ResName,10)
*Resinfo\Filesize=SizeofResource_(hGetModuleHandle,FindRs)
Protected LoadRs=LoadResource_(hGetModuleHandle,FindRs)
*Resinfo\Bufferfile=LockResource_(LoadRs)
EndProcedure
Define GetModuleHandle=GetModuleHandle_(0)
_GetResource(GetModuleHandle,MasuperImage,"IMAGEBIN")
Define Opf=OpenFile(#PB_Any,"MasuperImage.jpg")
WriteData(Opf,*MasuperImage\Bufferfile,MasuperImage\Filesize)
CloseFile(Opf)
.....i Love Pb
falsam
Messages : 7324 Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :
Message
par falsam » sam. 12/sept./2015 17:38
celtic88 a écrit : e vais utiliser ce code comme ça esque j ai pas tort
je ne connais pas ton code complet. Mais je pense tu as tord.
Au moins une raison :
Code : Tout sélectionner
WriteData(Opf, *MasuperImage\Bufferfile,MasuperImage\Filesize)
Comment tu initialises MasuperImage\Filesize ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
celtic88
Messages : 309 Inscription : sam. 12/sept./2015 14:31
Localisation : Alger
Message
par celtic88 » sam. 12/sept./2015 17:45
falsam a écrit : celtic88 a écrit : e vais utiliser ce code comme ça esque j ai pas tort
je ne connais pas ton code complet. Mais je pense tu as tord.
Au moins une raison :
Code : Tout sélectionner
WriteData(Opf, *MasuperImage\Bufferfile,MasuperImage\Filesize)
Comment tu initialises MasuperImage\Filesize ?
ollla ,,,,je suis un peu perdue la! ase ta un documentation pour cela ? est désolée pour mon francais
.....i Love Pb
celtic88
Messages : 309 Inscription : sam. 12/sept./2015 14:31
Localisation : Alger
Message
par celtic88 » sam. 12/sept./2015 17:57
wa333, please any help !
.....i Love Pb
celtic88
Messages : 309 Inscription : sam. 12/sept./2015 14:31
Localisation : Alger
Message
par celtic88 » sam. 12/sept./2015 18:14
@falsam merci l amie pour ton aide j ai trouve la solution en re lisant "Pointeurs et accès mémoire" ,,,en fait il faux passer l adresse de la variable structureriser a la function
Structure Resourceinfo
*Bufferfile
Filesize.i
EndStructure
Define MasuperImage.Resourceinfo
Procedure _GetResource(hGetModuleHandle,*Resinfo.Resourceinfo,ResName.s)
Protected FindRs=FindResource_(hGetModuleHandle,ResName,10)
*Resinfo\Filesize=SizeofResource_(hGetModuleHandle,FindRs)
Protected LoadRs=LoadResource_(hGetModuleHandle,FindRs)
*Resinfo\Bufferfile=LockResource_(LoadRs)
EndProcedure
Define GetModuleHandle=GetModuleHandle_(0)
_GetResource(GetModuleHandle,@MasuperImage,"IMAGEBIN")
Define Opf=OpenFile(#PB_Any,"MasuperImage.jpg")
WriteData(Opf,MasuperImage\Bufferfile,MasuperImage\Filesize)
CloseFile(Opf)
.....i Love Pb
celtic88
Messages : 309 Inscription : sam. 12/sept./2015 14:31
Localisation : Alger
Message
par celtic88 » sam. 12/sept./2015 18:18
mai
la "MasuperImage\Bufferfile" est variable type point pour quoi on ne peut pas ajouter l "*" en tete ,,,aa
.....i Love Pb
celtic88
Messages : 309 Inscription : sam. 12/sept./2015 14:31
Localisation : Alger
Message
par celtic88 » sam. 12/sept./2015 18:23
Spock a écrit : en meme temps, si la structure ne sert qu'a cette procedure
autant l'inclure dedans
Code : Tout sélectionner
Procedure _GetResource(hGetModuleHandle,ResName.s)
Structure Resourceinfo
Bufferfile.i
Filesize.i
EndStructure
Resinfo.Resourceinfo
Protected FindRs
Protected LoadRs
FindRs=FindResource_(hGetModuleHandle,ResName,10)
Resinfo\Filesize.i=SizeofResource_(hGetModuleHandle,FindRs)
LoadRs=LoadResource_(hGetModuleHandle,FindRs)
Resinfo\Bufferfile=LockResource_(LoadRs)
EndProcedure
;
; Epb
est comment puis je savoirs le point et le size de mon resource pour l utiliser apres?
.....i Love Pb
falsam
Messages : 7324 Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :
Message
par falsam » sam. 12/sept./2015 18:50
@celtic88: Where do you come from ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
celtic88
Messages : 309 Inscription : sam. 12/sept./2015 14:31
Localisation : Alger
Message
par celtic88 » sam. 12/sept./2015 18:54
Spock a écrit : celtic88 a écrit :
est comment puis je savoirs le point et le size de mon resource pour l utiliser apres?
SHARED !!
Code : Tout sélectionner
Procedure _GetResource(hGetModuleHandle,ResName.s)
Structure Resourceinfo
Bufferfile.i
Filesize.i
EndStructure
Shared Resinfo.Resourceinfo
Protected FindRs
Protected LoadRs
FindRs=FindResource_(hGetModuleHandle,ResName,10)
Resinfo\Filesize.i=SizeofResource_(hGetModuleHandle,FindRs)
LoadRs=LoadResource_(hGetModuleHandle,FindRs)
Resinfo\Bufferfile=LockResource_(LoadRs)
; je vais mettre une valeur bidon dans la structure , histoire de montrer que ça transmet bien dehors de la procedure grace a Shared
Resinfo\Filesize.i=888
EndProcedure
; appel de la procedure
_GetResource(88,"toto")
debug "ho miracle .... ça marche !! la valeur est" + str(Resinfo\Filesize.i)
calldebugger
ah tree bien !mai c est pas l ideal sa, imagine ci je veut obtenir plusieurs fichiers par ex:
Structure Resourceinfo
*Bufferfile
Filesize.i
EndStructure
Define MasuperImage.Resourceinfo
Define MasuperImageTow.Resourceinfo
Define MasuperImageTre.Resourceinfo
Procedure _GetResource(hGetModuleHandle,*Resinfo.Resourceinfo,ResName.s)
Protected FindRs=FindResource_(hGetModuleHandle,ResName,10)
*Resinfo\Filesize=SizeofResource_(hGetModuleHandle,FindRs)
Protected LoadRs=LoadResource_(hGetModuleHandle,FindRs)
*Resinfo\Bufferfile=LockResource_(LoadRs)
EndProcedure
Define GetModuleHandle=GetModuleHandle_(0)
_GetResource(GetModuleHandle,@MasuperImage,"IMAGEBIN")
Define GetModuleHandle=GetModuleHandle_(0)
_GetResource(GetModuleHandle,@MasuperImageTow,"IMAGEBIN2")
Define GetModuleHandle=GetModuleHandle_(0)
_GetResource(GetModuleHandle,@MasuperImageTre,"IMAGEBIN3")
Define Opf=OpenFile(#PB_Any,"MasuperImage.jpg")
WriteData(Opf,MasuperImage\Bufferfile,MasuperImage\Filesize)
CloseFile(Opf)
;;;;;
.....i Love Pb
celtic88
Messages : 309 Inscription : sam. 12/sept./2015 14:31
Localisation : Alger
Message
par celtic88 » sam. 12/sept./2015 18:56
falsam a écrit : @celtic88: Where do you come from ?
algeria
.....i Love Pb
falsam
Messages : 7324 Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :
Message
par falsam » sam. 12/sept./2015 19:02
celtic88 a écrit : algeria
Ok merci
celtic88 a écrit : please any help !
celtic88 a écrit : est désolée pour mon francais
If you prefer to speak English, there is a forum in English.
http://www.purebasic.fr/english/index.php
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%