Page 1 sur 2

"Syntex error" avec un function :(

Publié : sam. 12/sept./2015 16:12
par celtic88
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

Re: "Syntex error" avec un function :(

Publié : sam. 12/sept./2015 16:18
par falsam
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
:arrow: Tuto sur les structures dans lequel il est indiqué comment passer une structure dans une procédure.

Re: "Syntex error" avec un function :(

Publié : sam. 12/sept./2015 16:49
par nico
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.

Re: "Syntex error" avec un function :(

Publié : sam. 12/sept./2015 16:52
par celtic88
et ca marche :D , merci bcp pour ton aide comme tu vois je suis debutant dans cette merrveilleux langage je tien a féliciter son createur <3

Re: "Syntex error" avec un function :(

Publié : sam. 12/sept./2015 17:01
par celtic88
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)

Re: "Syntex error" avec un function :(

Publié : sam. 12/sept./2015 17:38
par falsam
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 ?

Re: "Syntex error" avec un function :(

Publié : sam. 12/sept./2015 17:45
par celtic88
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 :oops:

Re: "Syntex error" avec un function :(

Publié : sam. 12/sept./2015 17:57
par celtic88
wa333, please any help !

Re: "Syntex error" avec un function :(

Publié : sam. 12/sept./2015 18:14
par celtic88
@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 8O
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)

Re: "Syntex error" avec un function :(

Publié : sam. 12/sept./2015 18:18
par celtic88
mai :P la "MasuperImage\Bufferfile" est variable type point pour quoi on ne peut pas ajouter l "*" en tete ,,,aa 8O

Re: "Syntex error" avec un function :(

Publié : sam. 12/sept./2015 18:23
par celtic88
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?

Re: "Syntex error" avec un function :(

Publié : sam. 12/sept./2015 18:50
par falsam
@celtic88: Where do you come from ?

Re: "Syntex error" avec un function :(

Publié : sam. 12/sept./2015 18:54
par celtic88
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)

;;;;;

Re: "Syntex error" avec un function :(

Publié : sam. 12/sept./2015 18:56
par celtic88
falsam a écrit :@celtic88: Where do you come from ?
algeria

Re: "Syntex error" avec un function :(

Publié : sam. 12/sept./2015 19:02
par falsam
celtic88 a écrit :algeria
Ok merci :wink:
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.
:arrow: http://www.purebasic.fr/english/index.php