Limite du nombre d' essai de password

-
Bonjour, j'ai un problème, je n'arrive pas à limiter le nombre de saisie à 3 pour la tentative de password. En fait la boucle continue jusqu'à amener le compteur directement à 3 sans me laisser entrer un nouveau mot de passe donc forcément à chaque fois il sera mauvais. Est-ce que quelqu'un pourrait m'aider, je débute en VB.net et je suis bloqué. voici mon code^^
Citation

lePrivate Sub BTvalider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTvalider.Click Dim NB_Essais_MAX As Integer Dim NB_essais_Restant As Integer Dim Password As String Dim Compteur As Integer Dim controle As Boolean NB_Essais_MAX = 3 Password = "password" Compteur = 0 controle = True While controle Compteur = Compteur + 1 NB_essais_Restant = NB_Essais_MAX - Compteur If TBpass.Text = Password Then MsgBox("Mot de Passe Correct !") controle = False Form2.Show() Else If Compteur = NB_Essais_MAX Then MsgBox("Le Nombre Limite d'essais est atteint ! Le programme va maintenant se fermer!") controle = False Application.Exit() End If If TBpass.Text <> Password Then MsgBox("Mauvais Mot de passe et NB° ESSAIS est " & Compteur) TBpass.Car() End If End If End While End Sub

Merci^^
Afficher la suite 

5 réponses

Messages postés
13610
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 août 2019
295
0
Merci
Bonjour
merci de lire et d'appliquer ce qui est décrit là
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Commenter la réponse de Whismeril
Messages postés
1911
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
16 août 2019
65
0
Merci
bonjour mervelis !
Les retours à la ligne n'existent pas chez toi ?
Car ton code est toujours aussi illisible
et pour les débutants un excellent cours : https://plasserre.developpez.com/cours/vb-net/

Commenter la réponse de vb95
Messages postés
13610
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 août 2019
295
0
Merci
Bonjour
Comme le note VB95, que je salue, malgré l’intervention de Karamel, qui a ajouté les balises de code, tout sur une ligne c’est illisible.

Si tu veux que l’on essaye de t’aider, il faut nous en donner l’envie.
Décrypter un truc imbittable ça ne donne pas envie.
Commenter la réponse de Whismeril
Messages postés
1911
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
16 août 2019
65
0
Merci
Bonjour à vous deux !
En mettant les Retours à la ligne cela est plus lisible
Et en modifiant ton code cela devient plus clair
On supprime tout d'abord le "le" qui est collé au Private Sub.
C'est quoi
TBpass.Car()
? ( voir les points d'interrogation )

Private Sub BTvalider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTvalider.Click 
     ' on déclare et initialise les variables
    Dim Password As String = "password"
    Dim NbEssais As Integer = 3 ' nombre d'essais max
    Dim Correct as Boolean = False
    While NbEssais > 0 ' tant qu'il reste des essais possibles
        NbEssais = NbEssais - 1 
        If TBpass.Text = Password Then 
            ' mot de passe OK 
            MsgBox("Mot de Passe Correct !")
            Correct = True
            NbEssais = 0 ' on met à 0 pour pouvoir sortir du While
        Else 
            ' mauvais mot de passe
            MsgBox("Mauvais Mot de passe et il reste " & NbEssais.ToString & " essais") 
            TBpass.Car() ' ?????
        End If 
    End While 
    If Correct = False then 
        MsgBox("Le nombre limite d'essais est atteint ! Le programme va maintenant se fermer!") 
        Application.Exit()
    Else 
        Form2.Show() ' mot de passe correct : on affiche la seconde form
    End If
End Sub




Bonsoir, merci beaucoup vb95 mon problème est résolu
vb95
Messages postés
1911
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
16 août 2019
65 > mervelis -
bonsoir !
1) Ce serait bien que tu postes la solution en l'expliquant
2) Ensuite cette première étape accomplie cliques sur la roue dentée en haut à droite tout en haut pour mettre ce sujet "en résolu"
Merci
Whismeril
Messages postés
13610
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 août 2019
295 > vb95
Messages postés
1911
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
16 août 2019
-
Bonjour vb, sur la dizaine de sujet ouverts par Mervelis, un seul est marqué résolu et c’est un modérateur qui l’a fait.
Commenter la réponse de vb95
Messages postés
13610
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 août 2019
295
0
Merci
Bonjour

Maintenant que ton code est lisible, tu peux remercier Karamel et VB95, décortiquons ce que fait ton code, enfin cette partie
    'Quand tu cliques, et que le password est incorrect
    Dim Password As String = "password"
    Dim NbEssais As Integer = 3 
    Dim Correct as Boolean = False
    While NbEssais > 0 'quand tu cliques sur le bouton c'est toujours 3
        NbEssais = NbEssais - 1 
        If TBpass.Text = Password Then 'on vient pas ici
            MsgBox("Mot de Passe Correct !")
            Correct = True
            NbEssais = 0
        Else 'on vient là
            MsgBox("Mauvais Mot de passe et il reste " & NbEssais.ToString & " essais") 
            TBpass.Car() ' Comme l'a dit VB95 on ne sait pas ce que fait cette méthode, donc je continue mon analyse en y faisant abstraction
        End If 
    End While 'et ici on retourne au début du while
 


    
'2eme tour
While NbEssais > 0 'NbEssais vaut 2, il s'est passé moins d'1 milliseconde depuis le click sur le messageBox,  TBpass.Text n'a pas changé (sauf si TBpass.Car() y fait quelque chose, mais ça on ne sait pas)
        NbEssais = NbEssais - 1 
        If TBpass.Text = Password Then 'on vient toujours pas ici
            MsgBox("Mot de Passe Correct !")
            Correct = True
            NbEssais = 0
        Else 'on revient forcément là
            MsgBox("Mauvais Mot de passe et il reste " & NbEssais.ToString & " essais") 
            TBpass.Car()
        End If 
    End While ' ici on retourne au début du while


Et ainsi de suite jusqu'à ce que NbEssais vaille 0

Vois tu ce qui cloche dans ton algorithme?
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Commenter la réponse de Whismeril