Page 1 sur 1

Comportement non compris variable globale et procédure

Publié : dim. 19/janv./2025 21:28
par Shadow
Salut,

Dans ce code, on se dis qu'il y a un gros bug, je viens d'avoir un soucis avec un de mes programme ou
je ne comprenais pas le problème, et c'est ragean de pas savoir ou est le problème ****** :twisted: :twisted: :twisted:
En faite, le soucis viens de la variable pourtant bien globale, qui n'est pas déclaré avant la procédure, du coup ça marche pas !
Fred devrai faire un truc pour avertir de ce genre de truc car tu peu chercher très longtemps avant de comprendre la soucis !
Pour moi la logique est la suivante:

Création d'une variable globale MyVar.i qui vaut 999, après j'appel ma fonction, le résultat devrait donc être:
Dans testProc: MyVar = 999
Dans testProc: MyVar = 42
Après la déclaration Global, MyVar = 42
Dans testProc: MyVar = 42
Dans testProc: MyVar = 42
Après la déclaration Global, MyVar = 42

Mais bon, c'est parce que j'ai rien compris, ça doit forcement être ça :mrgreen:

Code : Tout sélectionner

; --- Procédure qui utilise MyVar ---
Procedure testProc()
  Debug "Dans testProc: MyVar = " + Str(MyVar)
  MyVar = 42
  Debug "Dans testProc: MyVar = " + Str(MyVar)
EndProcedure

; Maintenant, on déclare MyVar en Global
Global MyVar.i
MyVar = 999

testProc()  

Debug "Après la déclaration Global, MyVar = " + Str(MyVar)

; On rappelle la procédure
testProc()
; => Cette fois, MyVar est bien la globale valant 999

Debug "Après la déclaration Global, MyVar = " + Str(MyVar)
Résultat:
Dans testProc: MyVar = 0
Dans testProc: MyVar = 42
Après la déclaration Global, MyVar = 999
Dans testProc: MyVar = 0
Dans testProc: MyVar = 42
Après la déclaration Global, MyVar = 999

Re: Comportement non compris variable globale et procédure

Publié : lun. 20/janv./2025 11:29
par falsam
Bien que non précisé dans l'aide, les variables globales doivent être déclarées avant leurs utilisations dans les procédures. Ajoute EnableExplicit au début de ton code et tu en auras la confirmation.

Re: Comportement non compris variable globale et procédure

Publié : lun. 20/janv./2025 11:46
par falsam
Je pensais que ce n'était pas clairement indiqué dans l'aide mais en fait c'est bien notifié.

A propos des procédures, si tu souhaites accéder aux variables globales il faut les partager au préalable.

https://www.purebasic.com/french/docume ... %20Static).

Re: Comportement non compris variable globale et procédure

Publié : lun. 20/janv./2025 13:56
par Shadow
Salut Falsam :)

Je n'est pas vue ou étais indiqué ceci, pour moi il faudrait l'indiquer, avec des exemples en plus pour expliquer le comportement.
"Les variables globales doivent être déclarées avant leurs utilisations dans les procédures"

Je propose cet ajout qui ne sera que utile !
Car ça peut vraiment mettre le Bazard :wink:
Merci à toi.