Problème avec GO TO

la-foudre870 Messages postés 18 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 25 décembre 2015 - 10 déc. 2015 à 21:03
la-foudre870 Messages postés 18 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 25 décembre 2015 - 12 déc. 2015 à 08:13
Bonjour, j'essaye de faire un programme permettant des modifications de mots de passe (ancien, nouveau, confirmation) et j'ai un problème pour valider pourriez vous m'aider, voici l'ensemble du code,
Il y a 2 problèmes,
- le contrôle du mot de passe est incorrect à à chaque caractère,il devient bon une fois le mot de passe totalement saisie comment faire pour contourner ce problème
- je n'arrive pas à faire valider mes changement car la boucle ne fonctionne pas
Merci d'avance

Imports System.IO
Imports System.IO.File
Public Class Form4
    Private Property Lignemdp As String

    Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
    End Sub

    Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click
    End Sub

    Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click
    End Sub

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Me.Close()
    End Sub

    Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
        Dim SM As New StreamReader("C:\temp\M.txt")
        Lignemdp = SM.ReadLine
        If TextBox1.Text = Lignemdp Then
            MsgBox("ANCIEN MOT DE PASSE CORRECTEMENT RENSEIGNÉ")
            GoTo CHANGEMENT
            SM.Close()
        Else
            MsgBox("ERREUR DE SAISIE")

        End If
CHANGEMENT:

        Dim NMDP As String
        NMDP = TextBox2.Text
        Dim NMDPV As String
        NMDPV = TextBox3.Text
        If NMDPV = NMDP And NMDP <> "" And NMDP.Length > 5 Then
            MsgBox("MOTS DE PASSE IDENTIQUE")
            GoTo Validation

        Else
            MsgBox("INCOHERENCE ENTRE LES MOTS DE PASSE OU PAS ASSEZ COMPLEXE")
        End If

    End Sub
Validation:

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

        System.IO.File.Delete("C:\Temp\M.txt")
        Dim SMN As New StreamWriter("C:\temp\M.txt")
        SMN.Write(TextBox3.Text)
        SMN.Close()
        Me.Close()

    End Sub

End Class

3 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
10 déc. 2015 à 21:43
GOTO est u mot clé à bannir en VB.

Utilise des structures et des techniques plus adaptées.

Par exemple dans :
TextBox1_TextChanged
Si le mdp n'est pas bon, tu passe dans le Else puis à ton étiquette de changement de mdp, le tout sans fermer l'accès au fichier.

Si après le MsgBox (je reviendrais après sur cette instruction) tu mets
Return
Le code de la procédure s'arrêtera là et pas besoin de GOTO.

De plis, actives Option Strict et Option Explicit dans ton projet et retires l'import "Microsoft.VisualBasic".

http://codes-sources.commentcamarche.net/faq/11151-pourquoi-mon-code-vb6-vba-ne-marche-pas-en-vb-net

Remplace les Msgbox par MessageBox.Show, etc.
Cela t'évitera d'avoir du code simili VB6 en VB.NET.
0
Merci, de m'avoir fait comprendre pourquoi ne pas utiliser GOTO. N'existe pas en Java.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 11/12/2015 à 18:23
Bonjour,
Par ailleurs :
Si comme tout le donne à penser TexBox1 est une textbox de saisie au clavier, le choix de l'évènement TextChanged est très maladroit puisqu'il se déclencherait à chaque touche pressée.
Il me parait encore plus maladroit de créer l'objet SM (en New, de surcroît) et de déterminer Lignemdp à chaque changement (donc à chaque frappe)
EDIT : on voit par ailleurs assez bien (la comparaison faite) que le mot de passe est en clair dans le fichier texte. A quoi bon utiliser un mot de passe aussi vulnérable ?


________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
la-foudre870 Messages postés 18 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 25 décembre 2015
11 déc. 2015 à 19:55
Salut à tous merci pour vos conseils,
je débute en vb alors je ne suis pas un as,
c'est pour l'instant la seul solution que j'ai trouvée.
Pourquoi faut il utiliser Option Strict et Option Explicit ?
peu tu m'écrire un code que je pourrai adapter pour mon projet
merci d'avance
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
11 déc. 2015 à 20:15
Bonsoir, si tu débutes, alors le mieux est de suivre un cours pour débutant.
NHenri plus haut t'as mis un lien vers un article de mon cru, dans lequel je donne un lien vers un très bon cours.
0
la-foudre870 Messages postés 18 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 25 décembre 2015
12 déc. 2015 à 08:13
merci
0
Rejoignez-nous