Image et variable

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Image et variable

Message par blendman »

salut

J'ai testé ce code en pensant qu'il fonctionnerait, mais non.
Savez-vous pour quelle raison ?

Je sais que je peux modifier facilement, en utilisant un paramètre dans la procédure, ou shared grid et créer une procedure pour créer l'image avec shared grid aussi, etc.. Mais j'aimerai savoir pourquoi utiliser une variable globale pour une image ne marche pas comme ça.

merci :)

Code : Tout sélectionner

Procedure CreateCheckker()
  If StartDrawing(ImageOutput(grid))    
    Box(0,0,64,64,RGB(125,125,125))
    StopDrawing()
  EndIf
EndProcedure

OpenWindow(0,0,0,800,600,"image",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)

Global grid.i
grid = CreateImage(#PB_Any,64,64,32)
CreateCheckker()

Repeat
  event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
Avatar de l’utilisateur
Eric
Messages : 79
Inscription : dim. 08/juil./2007 21:38
Localisation : Nord
Contact :

Re: Image et variable

Message par Eric »

La variable globale grid doit être déclarée avant son utilisation pour que l'ensemble des procédures puissent l'utiliser.
Avatar de l’utilisateur
Eric
Messages : 79
Inscription : dim. 08/juil./2007 21:38
Localisation : Nord
Contact :

Re: Image et variable

Message par Eric »

Code : Tout sélectionner

Global grid.i

Procedure CreateCheckker()
	If StartDrawing(ImageOutput(grid))    
		Box(0,0,64,64,RGB(125,125,125))
		StopDrawing()
	EndIf
EndProcedure

OpenWindow(0,0,0,800,600,"image",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)


grid = CreateImage(#PB_Any,64,64,32)
CreateCheckker()

Repeat
	event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow
End
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Image et variable

Message par Backup »

ou bien faire comme moi

mettre les procedures en fin de code !

Code : Tout sélectionner


Declare  CreateCheckker()


OpenWindow(0,0,0,800,600,"image",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)

Global grid.i
grid = CreateImage(#PB_Any,64,64,32)
CreateCheckker()

Repeat
	event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow


; ************** zone des procedures ****************************
Procedure CreateCheckker()
	If StartDrawing(ImageOutput(grid))   
		Box(0,0,64,64,RGB(125,125,125))
	StopDrawing()
EndIf
EndProcedure; EPB
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Image et variable

Message par G-Rom »

Au moment de la compilation , le compilateur compile de haut en bas, il va rencontré le symoble indéfini "grid" , comme il n'existe nul part pour le moment , le compilo en deduis que cette variable à une porté limitée à la procédure , une variable temporaire donc , qui sera detruit à endprocedure automatiquement.
ensuite , il recontre ta variable globale du même nom , le compilo recherche d’éventuelle conflit avec d'autre nom similaire, mais l'autre n'a pas le même scope ( visibilité ) , le compilateur en deduis donc que c'est 2 variables différentes.
La méthode qu'eric te présente est la bonne.

@++
Répondre