Page 1 sur 1

[R] Lecture fichier INI

Posté : mar. 13 août 2013 10:20
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.

Re: [..] Lecture fichier INI

Posté : mar. 13 août 2013 11:58
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

Re: [..] Lecture fichier INI

Posté : mar. 13 août 2013 12:05
par Ks10
Merci beaucoup Tlem, cela fonctionne oui :)
Je vais me baser la dessus pour m'exercer !

Bonne journée ! Sujet résolu.

Re: [R] Lecture fichier INI

Posté : mer. 14 août 2013 09:52
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

Re: [R] Lecture fichier INI

Posté : mer. 14 août 2013 15:14
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 !