Comportement non compris variable globale et procédure
Publié : dim. 19/janv./2025 21:28
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 ******
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:
Mais bon, c'est parce que j'ai rien compris, ça doit forcement être ça
Résultat:
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 ******



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

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)
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