[R] Lecture fichier INI

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

[R] Lecture fichier INI

#1

Message par Ks10 »

Bonjour !

Je suis entrain d'essayer de faire des exercices sur l'utilisation des fichiers INI. Pour le moment j'ai réussi à ouvrir, écrire à l'intérieur d'un fichier. J'ai commencer à faire quelques vérifications mais je bloque sur un truc. Regarder :

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$ini = @ScriptDir & "\database.ini"
Global $Form1 = GUICreate("AccountManager", 528, 172, 197, 200)
Global $Input1 = GUICtrlCreateInput("", 128, 16, 289, 24)
Global $Input2 = GUICtrlCreateInput("", 128, 56, 289, 24)
Global $Button1 = GUICtrlCreateButton("Connexion", 128, 96, 291, 25)
Global $Button2 = GUICtrlCreateButton("Crée un compte", 128, 136, 291, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg


            Case $Button1
                        $read_1 = GUICtrlRead($Input1)
                        $read_2 = GuiCtrlRead($Input2)

                        $lop = IniReadSection($ini, "Nom de compte / Password")
                        For $i = 1 To $lop[0][0] ; on s'apprête à lire toutes les lignes de la section
                            If $read_1 = $lop[$i][0] and $read_2 = $lop[$i][1] Then
                                MsgBox(64, "Informations", "Connexion réussi !")

                            Else
                                MsgBox(64, "Informations", "Identifiant incorrect")
                                ExitLoop
                            EndIf
                        Next
                        ;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



    Case $Button2
        $read_1 = GUICtrlRead($Input1)
        $read_2 = GuiCtrlRead($Input2)

        FileRead($ini, 1)
        IniWrite($ini, "Nom de compte / Password", $read_1, $read_2)








  Case $GUI_EVENT_CLOSE
   Exit

 EndSwitch
WEnd
En résumé :
Avec ce code, en cliquant sur crée un compte : le programme lie ce qu'il y a dans les INPUT et le stock dans le fichier INI sous cette forme : nomdecompte = password. Jusque la aucun soucis.

En cliquant sur Connexion : le programme lie ce qu'il y a dans les input, ouvre le fichier ini et vérifie que les données corresponde. Cependant j'ai un soucis car lorsque je rentre des données correct il fait la vérification, m'affiche que la connexion est réussi mais lorsque je rentre une seconde fois il me dit que les identifiant sont incorrect.

Exemple :
Dans le fichier INI , il y a :

compte1 = password1
compte2 = password2
compte3 = password3

Si je rentre compte1 et password1 il n'y aura pas de soucis.
Si je rentre compte2 et 3 et password2 et 3 , il m'affichera que les identifiants sont incorrect.

Je suis sur que le problème vient de mon tableau car je ne suis pas encore à l'aise avec les tableaux.

Voila merci d'avance pour vos futurs réponses.
Modifié en dernier par Ks10 le mar. 13 août 2013 12:05, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lecture fichier INI

#2

Message par Tlem »

Bonjour Ks10.
Il y a dans votre système de codage plusieurs éléments qui ne vont pas.

1 - Le fichier .ini : Pas dans le bon format et mauvaise gestion.
Vous ne devez pas utiliser d'espace entre la clé et la valeur de clé. Dans votre exemple il n'y a pas de section !!!

2 - Le contrôle des identifiants est trop complexe. Vérifiez directement les valeurs dans le fichier sans avoir besoin de traiter la section entière.

Vous trouverez ci-dessous votre code modifié et fonctionnel (pensez à partir d'un fichier vierge ou de mettre aux normes votre fichier database.ini. J'ai rajouté quelques tests, mais il en faudrait encore plus afin d'assurer les risques d'erreurs. Vous devez rajouter le test de présence du fichier .ini, le test d'écriture, des tests sur la longueur de l'identifiant et du mot de passe, le test de la présence d'identifiant afin de ne pas écraser un identifiant existant, et encore d'autres tests de sécurité. ;)
► Afficher le texte
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Lecture fichier INI

#3

Message par Ks10 »

Merci beaucoup Tlem, cela fonctionne oui :)
Je vais me baser la dessus pour m'exercer !

Bonne journée ! Sujet résolu.
jcaspar
Niveau 7
Niveau 7
Messages : 449
Enregistré le : mar. 23 sept. 2008 17:58
Status : Hors ligne

Re: [R] Lecture fichier INI

#4

Message par jcaspar »

M :D erci beaucoup pour vos réponses vous êtes vraiment très fort !


Je vais étudier vos réponses .. :mrgreen: .
Idéalement je souhaiterais pouvoir utiliser plusieurs comptes différents environ une dizaine ..... :roll:

Jean-Marc
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [R] Lecture fichier INI

#5

Message par Ks10 »

Avec le code de Tlem, il n'y a pas de limite au niveau de la création des comptes ;)
Tien une petite astuce supplémentaire pour le mot de passe :

Code : Tout sélectionner

$Input2 = GUICtrlCreateInput("", 128, 56, 289, 24, $ES_PASSWORD)
Explication :
$ES_PASSWORD cachera ce que l'utilisateur entrera dans le input ;)

Aller bon codage à toi !
Répondre