Problème avec GO TO

Messages postés
18
Date d'inscription
vendredi 15 mai 2015
Statut
Membre
Dernière intervention
25 décembre 2015
- - Dernière réponse : 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
Afficher la suite 

3 réponses

Messages postés
14485
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
16 juin 2019
131
0
Merci
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.
Merci, de m'avoir fait comprendre pourquoi ne pas utiliser GOTO. N'existe pas en Java.
Commenter la réponse de NHenry
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
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.
Commenter la réponse de ucfoutu
Messages postés
18
Date d'inscription
vendredi 15 mai 2015
Statut
Membre
Dernière intervention
25 décembre 2015
0
Merci
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
Whismeril
Messages postés
13401
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 juin 2019
279 -
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.
la-foudre870
Messages postés
18
Date d'inscription
vendredi 15 mai 2015
Statut
Membre
Dernière intervention
25 décembre 2015
-
merci
Commenter la réponse de la-foudre870