Est-ce que quelqu'un peu m'expliquer la différence entre ces deux codes :
Code : Tout sélectionner
a = 10
Procedure Change()
Shared a
a = 20
EndProcedure
Change()
Debug a ; Affichera 20, car la variable est partagée.
Code : Tout sélectionner
Global a = 10
Procedure Change()
a = 20
EndProcedure
Change()
Debug a ; Affichera 20, car la variable est globale.
De plus, dans le code suivant, je ne voir pas pourquoi le compiler ne génère pas d'erreur alors que l'origine de "a" n'est pas explicitement déclarée dans la procédure. On pourrait très bien être retombé sur la variable "a" globale par erreur alors qu'on voulait une variable protected qu'on a oublié de déclarer... Pour le coup cela ressemble plus à du "EnableSemiExplicit" si vous voyez ce que je veut dire...
Code : Tout sélectionner
Global a = 10
Procedure Change()
EnableExplicit
a = 20 ; N'affichera pas d'erreur de compilation
EndProcedure
Change()
Debug a ; Affichera 20, car la variable est globale.