Tout d'abord, ce tutoriel s'adresse aux débutants en AutoIt qui se demandent bien comment se servir d'un fichier .ini, ou d'autres qui se demandent tout simplement ce que c'est et à quoi ça sert. On va donc d'abord définir ce qu'est un fichier .ini.
En d'autre termes, un fichier .ini est utilisé pour stocker des données.Wikipédia a écrit :En informatique, un fichier INI est un fichier de configuration dans un format de données introduit par les systèmes d'exploitation Windows en 1985. Par convention les noms de ces fichiers portent l'extension « .ini ».
Il faut savoir que le fichier .ini a une architecture bien a lui :
Nous avons d'abord la section, où l'on peut insérer des clefs pour lesquelles chaque clefs a une valeur donnée. Ce qui nous donne :
Code : Tout sélectionner
[Section] ; une section
clef=valeur ; clef avec sa valeur associée
clef2=valeur2 ; seconde clef
[Section2] ; une seconde section
clef3=valeur3 ; etc...
[Section3] ; etc...
clef4=valeur4 ; etc...
Bien sûr que si, mais ce genre de fichier va nous donner une certaine liberté. Voici quelques exemples :
Exemple 1 :
Vous êtes sur un programme de chat, le chat est composé d'un ou plusieurs client(s) (les utilisateurs donc) et un serveur, qui se chargera d'envoyer les informations aux différents utilisateurs. Admettons que vous vous êtes préalablement inscrit avec un pseudo, et que pour ne pas vous confondre, le serveur a enregistré votre adresse IP. Vous vous amusez ensuite à flooder votre ami via MP. Bah, le pseudo et l'IP faut les enregistrer, et les variables c'est bien beau mais ça ralentirait beaucoup trop le serveur. Voilà comment monsieur le serveur va procéder :
Client1(vous) >>>envoie le message+IP>>>[Serveur(reçoit l'IP, cherche dans la section "membres" clef "votreIP" et trouve "votre pseudo")]>>>envoie votre message+pseudo>>>Client2(ami) sait dorénavant qui est entrain de l'embêter et qui il va bientôt bloquer...
C'est aussi simple que ça !
Pour l'exemple2, je le donnerai à la fin puisque je vais vous proposer un TP

Mais, de quoi a t-on besoin pour faire ce genre de choses ? Nous allons utiliser toutes les commandes que nous offre AutoIt pour la gestion de fichiers .ini.
Commandes :
Code : Tout sélectionner
IniWrite("le_nom_de_votre_fichier.ini","la_section","la_clef","sa_valeur")
Code : Tout sélectionner
IniDelete("le_nom_de_votre_fichier.ini","la_section"[,"la_clef")
Code : Tout sélectionner
IniRead("le_nom_du_fichier.ini","la_section","la_clef","default")
Code : Tout sélectionner
IniRenameSection("le_nom_de_votre_fichier.ini","la_section","la_nouvelle_section[,flag)
Code : Tout sélectionner
IniWriteSection("le_nom_de_votre_fichier.ini","la_section","la_clef=sa_valeur"&@LF&"la_clef2=sa_valeur")
Nous approchons des commandes plus compliquées maintenant, puisqu'elles demandent l'utilisation des tableaux.
Code : Tout sélectionner
IniReadSection("le_nom_de_votre_fichier.ini","la_section")
Pour cela nous avons besoin de traiter ligne par ligne le fichier à l'aide d'une boucle. Voici un code commenté !
Code : Tout sélectionner
fichier.ini
[section]
clef=2
clef2=4
Code : Tout sélectionner
$ini = @ScriptDir&"\fichier.ini" ; on place le fichier ini dans une variable pour éviter de le ré-écrire.
$lop = IniReadSection($ini,"section") ; on appelle la commande placée dans une variable
For $i = 1 To $lop[0][0] ; on s'apprête à lire toutes les lignes de la section
MsgBox(0,"lop","clef : "&$lop[$i][0]&" "&"valeur : "&$lop[$i][1]) ; on affiche le nom de la clef et sa valeur pour chaque ligne
Next ; fin de la boucle, il n'y a plus rien dans la section
Code : Tout sélectionner
IniReadSectionNames("le_nom_de_votre_fichier.ini")
Code : Tout sélectionner
fichier.ini
[section]
[mortderire]
[encoreUneSection]
[etUneDePlus]
Code : Tout sélectionner
$ini = @ScriptDir&"\fichier.ini" ; on place le fichier ini dans une variable pour éviter de le ré-écrire.
$lop = IniReadSectionNames($ini) ; On place notre commande dans une variable
For $i = 1 To $lop[0] ;on commence la boucle pour analyser ligne par ligne le fichier
MsgBox(0,"lop",$lop[$i]) ; on affiche le nom de la section pour chaque section
Next
Alors comment on compte le nombre de sections ?! Vous avez une idée ?benhsaien a écrit :Bonjour,
je travaille avec autoit pour l'automatisation des test,ma question est : y'a t'il un moyen pour compter nombre de section d'un fichier .ini
Merci d'avance
Indice :
Code : Tout sélectionner
IniReadSectionNames()

Maintenant que nous avons fini avec toutes ces commandes, je vais vous demander de réaliser cet exemple 2.
Exemple 2 : (cahier des charges)
"Bonjour, je suis directeur d'une maison de refuges pour les animaux de mon village, tout particulièrement de chats et de chiens. J'aimerai que vous me fassiez un programme avec une petite interface graphique, avec lequel je pourrai ajouter ou supprimer un chat ou chien rentrant ou sortant de ma maison. Aussi, j'aimerai avoir un petit bouton pour voir défiler chaque chat ou chien avec son nom et son age. Par contre, puisque je suis maladroit, il m'arrive de me tromper et donc de mal rentrer des informations. Vous veillerez à ce que cela ne perturbe pas mon programme. Je vous remercie !"
A partir du cahier des charges, vous créerez une interface graphique répondant aux besoins de Dédé, vous gérerez aussi un fichier SPA.ini avec l'architecture correcte qui va avec.
Bonne chance !
Si vous êtes là, c'est que :
Code : Tout sélectionner
$Local $est_ici
Switch $est_ici
Case $n_a_pas_compris
MsgBox(16,"NOOOOOON !!","J'espère que ma correction va t'aider !")
Case $veux_corriger
MsgBox(16,"Attention !!" !!","J'espère que tu as juste !")
Endswitch