Static
DescriptionStatic[.<type>] <variable[.<type>]> [= <constant expression>] [, ...]
Static permet de créer des variables locales persistantes dans une procedure. Les variables statiques sont prioritaires sur les variables globales, ce qui implique qu'une variable globale sera ignorée dans une procédure si une variable statique portant le même nom est déjà déclarée. La valeur de la variable statique n'est pas réinitialisée à chaque appel de la procédure: c'est donc un bon moyen pour avoir une variable globale affectée à une seule procédure.
Static peut aussi être utilisé avec les tableaux, les listes et les maps. Lors de la déclaration d'un tableau static, ses paramètres doivent être une valeur constante.
Exemple: Avec une variable
Global a a = 10 Procedure Change() Static a a+1 Debug "Dans la Procédure: "+Str(a) ; Affichera 1, 2, 3 car la variable s'incrémente à chaque appel de la procédure. EndProcedure Change() Change() Change() Debug a ; Affichera 10, car une variable 'static' n'affecte pas une variable 'global'.
Exemple: Avec un tableau
Global Dim Tableau(2) Tableau(0) = 10 Procedure Change() Static Dim Tableau(2) Tableau(0)+1 Debug "Dans la Procédure: "+Str(Tableau(0)) ; Affichera 1, 2, 3 car la valeur du champ du tableau s'incrémente à chaque appel de la procédure. EndProcedure Change() Change() Change() Debug Tableau(0) ; Affichera 10, car un tableau 'static' n'affecte pas un tableau 'global'.
Exemple: Avec plusieurs procedures
Procedure Foo() Static x = 100 ; La déclaration et l'affectation sont effectuées une seule fois, au lancement du programme. Debug x x + 1 EndProcedure Foo() ; Affiche 100 Foo() ; Affiche 101 Foo() ; Affiche 102 Debug "---" Procedure Bar() Static x ; La déclaration est effectuée une seule fois, au lancement du programme. x = 100 ; L'affectation est effectuée à chaque lancement de la Procedure. Debug x x + 1 EndProcedure Bar() ; Affiche 100 Bar() ; Affiche 100 Bar() ; Affiche 100