Elles sont belles mes variables !

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

Superman

V
Ancien staff
Dec 2, 2009
2,489
0
596
Présentation des variables

Tout d'abord, qu'est-ce qu'une variable ?

Une variable est un endroit où l'on stocke une ou plusieurs données en mémoire afin de pouvoir y accéder rapidement. Vous pouvez penser à une boîte aux lettres qui vous permet soit de mettre du courrier, soit d'en retirer, ou encore de lire le courrier sans l'enlever de la boîte aux lettres.
Par exemple, vous pouvez créer une variable pour stocker la réponse d'une question posée à l'utilisateur, ou le résultat d'une équation mathématique.

Chaque variable a son propre nom unique (comme une boîte aux lettres), qui doit commencer par le caractère [$] dollar et être formé uniquement de lettres, nombres et le caractère [_] tiret bas ou "underscore".

Autoit est laxiste avec les variables : une variable peut contenir absolument n'importe quoi.


Et oui ! Que ce soit une commande, une valeur, du texte, une fonction, un fichier, un tableau, on peut absolument mettre ce que l'on désire dans cette boîte virtuelle ! Vous n'avez pas besoin de déclarer auparavant que la variable contiendra un entier ou une chaîne de caractères par exemples, car Autoit s'en charge lui-même.

Quelques exemples




  • $var1
  • $my_variable
  • $ce_tuto_est_vraiment_genial

Quand vous créez une variable, son nom doit être significatif. Si vous créez des centaines de variables dans un code et que vous ne savez pas ce que représente chaque variable, vous allez avoir beaucoup de mal à le comprendre.
smile.png


Il existe des variables un peu différentes, les macros.
Une macro est une variable spéciale qui ne peut pas être modifiée par l'utilisateur. Elle contient principalement des informations renvoyées par votre système d'exploitation, et commence par le caractère @.
Voir la sous-partie Les macros pour en savoir plus.
La portée d'une variable

Il y a trois méthodes principales pour déclarer une variable : une déclaration de variable s'effectue grâce aux mots-clés Global, Dim ou Local.

La différence entre Global, Dim et Local est leur portée dans le script :

  • Global = force la création d'une variable de portée globale.
  • Dim = portée locale si la variable n'existe pas déjà globalement (dans ce cas, ré-utilise la variable globale !).
  • Local = force la création d'une variable de portée locale ou interne à une fonction.


Pour simplifier




  • Global = création d'une variable (redéfinissable) dont la valeur se retrouve partout, y compris dans les fichiers inclus (Includes).
  • Dim = création d'une variable (redéfinissable) dont la valeur se retrouve uniquement dans le script en cours (cette variable ne peut pas être récupérée dans ou par un fichier inclus).
  • Local = même chose que précédemment, mais peut aussi limiter la portée de la variable dans une fonction (dans ce cas, faire la déclaration dans la fonction).


Si vous ne saisissez pas totalement, sachez que vous utiliserez le plus souvent Global, du moins tant que vous ne saurez pas utiliser les fonctions. C'est pour ces dernières que la portée locale devient intéressante, car notre variable ne sera connue que pendant l'exécution de la fonction et n'influencera pas le reste du script, et ceci même si vous utilisez le même nom.

Déclarer une constante


A ces trois méthodes s'ajoute une quatrième, Const, qui permet de créer une variable qui ne pourra pas être redéfinie dans le script. Elle ne doit jamais être réassigné sous peine d'erreur à l'exécution. On s'en sert pour définir les paramètres du programme afin d'être certain de ne jamais les modifier.


  • Const = création d'une variable (non-redéfinissable) dont la valeur se retrouve partout, y compris dans les fichiers inclus (Includes) sauf si sa portée est limitée par l'ajout des commandes Global ou Local juste avant.


Exemples




  • Dim $var1
    Ici on declare localement la variable $var1.
  • Dim $var1, $myvariable = 10
    Ici, on déclare la variable $var1 et la variable $myvariable tout en lui attribuant la valeur 10.
  • Const $const1 = 1
    La variable $const1 aura pour valeur 1 et tout le long du code elle ne pourra pas en changer.
  • Local Const $const2 = 1
    La variable $const2 aura une valeur fixe de 1 limitée par la portée locale.

Il est aussi possible de déclarer une variable dynamiquement en lui affectant simplement une valeur (même nulle). Dans ce cas c'est la portée Dim qui est utilisée.


Exemple




  • $var1 = "create and assign"
    On assigne une chaîne de caractères à la variable $var1 sans l'avoir déclarée préalablement.


Cette méthode est très souvent utilisée car c'est de loin la plus simple, mais attention tout de même, la variable n'aura pas de portée globale.

L'utilisation en début de script de la directive AutoItSetOption("MustDeclareVars", 1)
vous obligera à déclarer vos variables grâce aux mots-clés. Il peut être judicieux de la mettre dans un script afin de ne pas vous tromper en oubliant la déclaration d'une variable globale.

Les tableaux

Mais d'abord, c'est quoi un tableau ?


Le tableau, appelé 'Array' en anglais, est une variable qui peut avoir plusieurs dimensions.
Il peut être initialisé par les commandes Const, Global, Dim et Local tout comme une variable standard.
La différence, c'est qu'il contient plusieurs 'cases' dans lesquelles on pourra stocker des valeurs.
C'est en gros la réunion des boîtes aux lettres du quartier. Mais comme vous vous en doutez, ces boîtes aux lettres ont un lien entre elles, ici elles recevront le courrier par le même facteur.

Un Array sera défini par des lignes et des colonnes, par exemple je veux savoir ce que contient la seconde ligne de la première colonne.

Les Arrays 1D



On parle d'un tableau 1D lorsque celui-ci est initialisé avec une seule dimension (une seule colonne) :

Code : Autre1
Dim $Array[5] = [8, 4, 5, 9, 1]



Nous avons ci-dessus un tableau de cinq lignes avec une colonne.
Pour accéder ou modifier un élément de ce tableau, il suffit d'indiquer la valeur de la position de cet élément dans le tableau.

Attention, lors de l'initialisation d'un tableau.
Lors de son initialisation, vous déclarez le nombre d'éléments du tableau,
mais celui-ci démarre toujours à l'élément 0, ce qui décale le comptage des éléments.

Un tableau ne peut dépasser 64 dimensions et/ou 16 millions d'éléments.


Par exemple, essayez le code ci-dessous :
Code : Autre1
2
Dim $Array[5] = [8, 4, 5, 9, 1]
MsgBox(0,"Tutoriel Autoit du siteduzero.com",$Array[1]) ;Affiche la valeur de la ligne 1


Il affichera la valeur '4'.

Code : Autre1
$Var = $Array[3]


Selon le tableau déclaré précédemment, ce code attribue la valeur 9 à la variable $Var.</puce>

Les Arrays 2D



On parle d'un tableau 2D lorsque celui-ci est initialisé avec plus d'une dimension, c'est à dire qu'on aura par exemple plusieurs lignes et plusieurs colonnes. Ce type d'Array ressemble donc aux tableaux tels que vous les concevez in real life.

On pourra donc utiliser le shéma suivant pour déclarer nos Arrays 2D:
Code : Autre1
2
3
4
5
6
7
Dim $Array[Nb_Ligne][Nb_Colonnes]=
[
[Col1_Ligne1, Col2_Ligne1, ... , ColN_Ligne1],
[Col1_Ligne2, Col2_Ligne2, ... , ColN_Ligne2],
... ,
[Col1_LigneN, Col2_LigneN, ... , ColN_LigneN]
]



Exemple



Code : Autre1
2
3
4
5
; Crée un tableau de deux lignes avec quatre colonnes.
Dim $Grille[2][4]=[["Paul", "Jim", "Richard", "Louis"], [485.44, 160.68, 275.16, 320.00]]

; Attribue la valeur Paul à la variable $Var
$Var = $Grille[0][0]



Si on veut récupérer la première colonne de la 3 ème ligne on va donc chercher à:
Code : Autre1
$Var = $Grille[0][2]


Ce qui affichera Richard.



Tout comme une variable classique, un tableau peut être dupliqué simplement comme ceci :
Code : Autre1
$Tableau = $Grille


ou effacé comme ceci :
Code : Autre1
$Tableau = ''



On utilisera très souvent les tableaux pour stocker des valeurs multiples car le traitement en sera plus rapide et plus aisé, et parce que si vous deviez creer 150 variables pour stocker vos valeurs vous seriez bien embêté.

Vous auriez pu contourner le problème car Autoit autorise la création et la lecture de variables dynamiques grâce aux commandes Assign() et Eval() mais nous verrons ceci beaucoup plus loin dans le tutoriel

Les macros

Autoit utilise un certain nombre de macros qui sont des variables spéciales en lecture seule, et incrémentées par défaut à Autoit. Les macros commencent par le caractère @ au lieu du classique $ et sont donc faciles à reconnaitre. Comme avec les variables constantes, vous pouvez utiliser les macros dans les expressions, mais ne pouvez leurs assigner une valeur.

Les macros pré-définies sont généralement utilisées pour fournir des informations sur le système tel que le chemin du répertoire de Windows, ou le nom de l'utilisateur en cours, l'heure, la résolution de l'écran, les retours d'erreur, etc...
La liste qui suit n'est pas complète. Pour avoir la liste complète des macros à votre dispositions, allez dans la documentation d'Autoit et cliquez sur Macro reference.

Liste non-exhaustive des macros les plus utilisées




  • @MyDocumentsDir : retourne le chemin complet du repertoire "Mes Documents" ;
  • @ComputerName : retourne le nom de l'ordinateur ;
  • @CRLF : équivaut à un retour chariot (appui sur la touche Entrée) ;
  • @DesktopDir : retourne le chemin complet du Bureau ;
  • @DesktopHeight : retourne la hauteur de votre résolution d'écran ;
  • @DesktopWidth : retourne la largeur de votre résolution d'écran ;
  • @HOUR : retourne l'heure ;
  • @HotKeyPressed : retourne la dernière touche appuyée par l'utilisateur ;
  • @ScriptDir : retourne le chemin complet du script ;
  • @ProgramFilesDir : retourne le chemin complet du répertoire "Program Files" ;
  • @OSVersion : retourne la version de votre OS ;
  • @SystemDir : retourne le chemin complet de votre répertoire système ;
  • @TempDir : retourne le chemin complet de votre répertoire temporaire.



Pour tester la puissance des macros, je vous laisse essayer ce script :

Code : Autre1
2
3
4
5
MsgBox(64,"Informations sur tous vos répertoires","Répertoire Système : " & @SystemDir & @CRLF & _
"Mes Documents : " & @MyDocumentsDir & @CRLF & _
"Dossier Temporaire : " & @TempDir & @CRLF & _
"Démarrage : " & @StartMenuDir & @CRLF & _
"Program Files : " & @ProgramFilesDir & @CRLF )




Vous pouvez remarquer l'utilisation de @CRLF afin de revenir à la ligne.
Cette macro sera souvent utilisée dans vos chaînes de caractères afin de revenir à la ligne.

Vous remarquerez également l'utilisation de '& _ '.
C'est une méthode utile quand vos lignes deviennent trop longues, vous pouvez alors l'utiliser pour que vos scripts soient plus lisibles.
En effet, quand une ligne devient trop longue, on préfère quelques fois la diviser en plusieurs lignes.

Pour ce faire, il suffit d'écrire '& _ ', qui veut juste dire à Autoit de continuer sa lecture une ligne en dessous, mais qu'on n'a pas terminé notre ligne.

S'il vous faut n'en retenir qu'une, ce serait @ScriptDir. En effet, à chaque fois que vous allez devoir interagir avec un fichier, vous allez très souvent utiliser cette variable. Vous souhaitez mettre une image dans votre script ? C'est encore cette macro que vous allez utiliser si votre image se situe dans le même dossier que votre script.

source : siteduzero.com
 

Djockers

[Synopsis]
V
Jun 17, 2011
1,160
0
461
127.0.0.1
Et si j'étais toi, j'éviterais de le dire en plus à un modo/administrateur/service technique comme superman!!!!!!
 

[V]aan

Membre actif
Nov 27, 2011
248
0
922
30
Mar 19, 2011
1,863
1
461
38
j'ai comprit à peu près mais le seul truc je comprends c'est à quoi servent les valeurs??
 

KardSharpz

Membre
Apr 3, 2012
18
0
306
127.0.0.1
adf.ly
à quoi servent les valeurs??
Les variables servent à stocker une valeur.
Par exemple, dans cette exemple la valeur de la variable $site est "cheat-gam3":
Code:
$site = "cheat-gam3"
Msgbox(4096,"Inoformation","Le site est:" & $site )
 
Last edited: