IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Boucle avec InputBox


Sujet :

Windows Forms

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Par défaut Boucle avec InputBox
    Bonjour,

    J'essaye de faire une boucle pour tester la valeur saisie dans une InputBox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim st As String = " "
    While st.Length <> 10 And Not st.Contains("/")
        st = InputBox("Veuillez entrer la date d'entrée (jj/mm/aaaa)")
    End While
    Le problème est qu'il ne marche pas


    J'ai essayé avec la date "10/12/09" et le code a bien continué

    Est-ce que quelqu'un sait pour quoi?
    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    While st.Length <> 10 And Not st.Contains("/")
        st = InputBox("Veuillez entrer la date d'entrée (jj/mm/aaaa)")
    End While
    D'abord ta boucle ne sert a rien puisque si l'on entre une valeur donc le nombre de caractère est different de 10 et ne contient pas "/" on entre dans une boucle infinie.

    Et si ta chaine contient un seul "/" c'est normal qu'on entre pas dans cette boucle
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Par défaut
    Merci pour ta reponse lilroma.

    D'abord ta boucle ne sert a rien puisque si l'on entre une valeur donc le nombre de caractère est different de 10 et ne contient pas "/" on entre dans une boucle infinie.
    L'idée c'est de forcer une saisie de la date au bon format, et faire le boucle jusqu'à cette saisie...

    Peut-être j'ai m'exprimé pas bien:
    Malgré le fait d'avoir un "/", ma date n'avais pas 10 caractères...
    Est-ce que le boucle devrait continuer?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Dans la condition, ça devrait être un OU, pas un ET. Il suffit qu'une seule des conditions soit vérifiée pour qu'on continue à boucler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim st As String = " "
    While st.Length <> 10 Or Not st.Contains("/")
        st = InputBox("Veuillez entrer la date d'entrée (jj/mm/aaaa)")
    End While
    On peut aussi l'écrire sous cette forme :

    Mais de toutes façons ce test n'est pas suffisant pour savoir si la date saisie est valide. Il vaudrait mieux faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim st As String = " "
    Dim dt As DateTime
    While Not DateTime.TryParseExact(st, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, dt)
        st = InputBox("Veuillez entrer la date d'entrée (jj/mm/aaaa)")
    End While

  5. #5
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim st As String = " "
    While st.Length <> 10 Or Not st.Contains("/")
    st = InputBox("Veuillez entrer la date d'entrée (jj/mm/aaaa)")
    End While
    Même avec sa c'est pas bon parceque en saisissant n'importe quoi avec 10 caractere et un "/" comme caractères sa va passer faut que tu utilise la seconde méthode.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim st As String = " "
    Dim dt As DateTime
    While Not DateTime.TryParseExact(st, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, dt)
        st = InputBox("Veuillez entrer la date d'entrée (jj/mm/aaaa)")
    End While
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Par défaut
    Merci à toi aussi tomlev.

    J'ai essayé ton code, mais il dit que CultureInfo et DateTimeStyles ne sont pas déclarés...

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Par défaut
    J'ai trouvé Imports System.Globalization.

    Est-ce que ça suffi?

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Marc_27 Voir le message
    Est-ce que ça suffi?
    Ben essaie, tu verras bien
    (a priori oui, ça suffit...)

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Par défaut
    J'ai essayé,

    les erreurs ont bien disparus mais on ne sait jamais...

    Bon,
    Merci beaucoup encore une fois

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DEBUTANT] sortir d'une boucle avec un touche particulière
    Par thibouille dans le forum Débuter
    Réponses: 4
    Dernier message: 25/10/2005, 07h44
  2. Probleme de boucle avec des processus sous UNIX
    Par sebastieng dans le forum POSIX
    Réponses: 6
    Dernier message: 15/10/2005, 19h57
  3. Boucle avec un TIBDataSet
    Par SebCBien dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/09/2004, 18h33
  4. Boucle avec variable à incrémenter
    Par snoop dans le forum Linux
    Réponses: 2
    Dernier message: 19/03/2004, 12h07
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 12h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo