[Ex] utilisation des var statiques afin de gérer les accès

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Répondre
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

[Ex] utilisation des var statiques afin de gérer les accès

#1

Message par sylvanie »

Bonjour,
J'hésiatais à mettre ceci en tutoriel, mais je ne sais pas quelle sera la pérénité du mot clé "Static" de la nouvelle mouture d'Autoit à la lecture de la note du fichier d'aide. Donc pour l'instant ce sera un exemple.

un des avantages de déclarer une variable en static est que sa durée de vie est valide tout au longs de l'exécution du script et ceux MEME si elle est locale.
(voir l'exple du fichier d'aide)

Le 2eme est que théoriquement (on verra qu'en pratique ce n'est pas encore ça ... mais c'est expérimental pour l'instant) est qu'une variable statique n'est accessible que dans la part de code où elle est déclarée.
Du coups si je fournie un au3 avec des services qui s'appuient sur une valeur déclarée statiquement dans mon code, un code tierce l'utilisant ne pourra agir dessus que si je lui donne des accesseur en lecture / écriture. Chose qui n'était pas possible avant.
Le hic, est qu'après avoir testé, est que ça marche bien pour les variables déclarées statiquement dans des fonctions, mais pas en tête de script.
Normalement, en C par exple, on déclare

Code : Tout sélectionner

     static int toto=5;
 
dans le fichier A.c , et bien aucun autre code linké issus de d'autre fichier c ne peuvent utiliser toto directement.
Malheureusement ici, dans mon exemple, les varaibles $ACTION_SET et $ACTION_GET peuvent être modifiées mais bon c'est un début.

fichier censé être un au3 d'inclusion "protégeant" la variable $My_static_var
► Afficher le texte
et celui qui peut faire des set et des get de cette variable via les accesseur en lecture et écriture uniquement :
► Afficher le texte
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Répondre