Partage
  • Partager sur Facebook
  • Partager sur Twitter

Sub en application console

Sujet résolu
    13 janvier 2018 à 11:04:45

    Bonjour, j'ai un petit problème, ma console se ferme sans raison. 

    Voici le code du "démarrage"  

    Sub question()
    
            Console.WriteLine("A quel e_validité voulez-vous que les nombres s'affiches : (1-10, 1 étant le plus lent.)")
            Console.Write("--> ")
            Dim e_val = Console.ReadLine()
            cond()
    
        End Sub

    Et celui du cond()

        Sub cond()
            Console.Clear()
    
            If Not e_val <> 1 Or e_val <> 2 Or e_val <> 3 Or e_val <> 4 Or e_val <> 5 Or e_val <> 6 Or e_val <> 7 Or e_val <> 8 Or e_val <> 9 Or e_val <> 10 Then
    
                If e_val = 1 Then
                    val = 100
                    rdn()
                ElseIf e_val = 2 Then
                    val = 200
                    rdn()
                ElseIf e_val = 3 Then
                    val = 300
                    rdn()
                ElseIf e_val = 4 Then
                    val = 400
                    rdn()
                ElseIf e_val = 5 Then
                    val = 500
                    rdn()
                ElseIf e_val = 6 Then
                    val = 600
                    rdn()
                ElseIf e_val = 7 Then
                    val = 700
                    rdn()
                ElseIf e_val = 8 Then
                    val = 800
                    rdn()
                ElseIf e_val = 9 Then
                    val = 900
                    rdn()
                ElseIf e_val = 10 Then
                    val = 1000
                    rdn()
                End If
                'rdn()
            Else
                MsgBox(" ")
                Console.Write("Erreur, choix indisponible.")
                Console.WriteLine(" ")
                System.Threading.Thread.Sleep(1000)
                question()
            End If
        End Sub

    Pourquoi ma console se ferme-t-elle ? Merci.



    -
    Edité par Mishaa 13 janvier 2018 à 11:08:27

    • Partager sur Facebook
    • Partager sur Twitter
      13 janvier 2018 à 11:07:53

      Salut,

      Pourquoi ma console se ferme-t-elle ? Merci.

      Dans ta fonction main, met ceci à la fin :

      Console.ReadKey()

      De sorte à faire "une pause".

      -
      Edité par vanaur 13 janvier 2018 à 11:08:34

      • Partager sur Facebook
      • Partager sur Twitter

      Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

        13 janvier 2018 à 11:10:31

        Fait. Je dois maintenant appuyer sur une touche, mais la console se ferme quand même. Elle ne "saute" pas dans le code, pour changer de SUB.
        • Partager sur Facebook
        • Partager sur Twitter
          13 janvier 2018 à 11:15:57

          Je dois maintenant appuyer sur une touche, mais la console se ferme quand même.

          C'était le but, non ? Elle doit normalement se fermer après que tu aies appuyé, donc à la fin du programme si tu l'as bien placé.

          >Elle ne "saute" pas dans le code, pour changer de SUB.

          Tu veux dire quoi par là ?

          • Partager sur Facebook
          • Partager sur Twitter

          Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

            13 janvier 2018 à 11:17:31

            Non, moi je veux juste récupérer ce que l’utilisateur marque. Ensuite, je veux passer à un autre bou de code ( cond() )

            Qui lui même va passer à un autre sub.

            • Partager sur Facebook
            • Partager sur Twitter
              13 janvier 2018 à 11:18:27

              Montre un peu ta fonction main
              • Partager sur Facebook
              • Partager sur Twitter

              Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

                13 janvier 2018 à 11:19:07

                Bon, plus simple, voilà mon code : 

                Module Module1
                    Dim random As New Random(), rn1 As Int64
                    Dim random2 As New Random(), rn2 As Int64
                    Dim random3 As New Random(), rn3 As Int64
                    Dim random4 As New Random(), rn4 As Int64
                    Dim random5 As New Random(), rn5 As Int64
                    Dim random6 As New Random(), rn6 As Int64
                    Dim random7 As New Random(), rn7 As Int64
                    Dim random8 As New Random(), rn8 As Int64
                    Dim random9 As New Random(), rn9 As Int64
                    Dim x As String = " & "" & "
                    Dim val As Int16
                    Dim e_val
                    Sub Main()
                
                        question()
                        Console.ReadKey()
                    End Sub
                    Sub question()
                
                        Console.WriteLine("A quel e_validité voulez-vous que les nombres s'affiches : (1-10, 1 étant le plus lent.)")
                        Console.Write("--> ")
                        Dim e_val = Console.ReadLine()
                        cond()
                
                    End Sub
                    Sub cond()
                        Console.Clear()
                
                        If Not e_val <> 1 Or e_val <> 2 Or e_val <> 3 Or e_val <> 4 Or e_val <> 5 Or e_val <> 6 Or e_val <> 7 Or e_val <> 8 Or e_val <> 9 Or e_val <> 10 Then
                
                            If e_val = 1 Then
                                val = 100
                                rdn()
                            ElseIf e_val = 2 Then
                                val = 200
                                rdn()
                            ElseIf e_val = 3 Then
                                val = 300
                                rdn()
                            ElseIf e_val = 4 Then
                                val = 400
                                rdn()
                            ElseIf e_val = 5 Then
                                val = 500
                                rdn()
                            ElseIf e_val = 6 Then
                                val = 600
                                rdn()
                            ElseIf e_val = 7 Then
                                val = 700
                                rdn()
                            ElseIf e_val = 8 Then
                                val = 800
                                rdn()
                            ElseIf e_val = 9 Then
                                val = 900
                                rdn()
                            ElseIf e_val = 10 Then
                                val = 1000
                                rdn()
                            End If
                            'rdn()
                        Else
                            MsgBox(" ")
                            Console.Write("Erreur, choix indisponible.")
                            Console.Write(" ")
                            System.Threading.Thread.Sleep(1000)
                            question()
                        End If
                    End Sub
                    Sub rdn()
                        Dim i As Int64 = 0
                        For i = 1 To 9223372036854775807
                            rn1 = random.Next(11111111, 99999999)
                            rn2 = random.Next(11111111, 99999999)
                            rn3 = random.Next(11111111, 99999999)
                            rn4 = random.Next(11111111, 99999999)
                            rn5 = random.Next(11111111, 99999999)
                            rn6 = random.Next(11111111, 99999999)
                            rn7 = random.Next(11111111, 99999999)
                            rn8 = random.Next(11111111, 99999999)
                            rn9 = random.Next(11111111, 99999999)
                            Console.WriteLine(rn1 & " " & rn2 & " " & rn3 & " " & rn4 & " " & rn5 & " " & rn6 & " " & rn7 & " " & rn8 & " " & rn9 & " ")
                
                            System.Threading.Thread.Sleep(val)
                        Next
                    End Sub
                
                End Module
                



                • Partager sur Facebook
                • Partager sur Twitter
                  13 janvier 2018 à 11:22:36

                  Ligne 23 :

                  Dim e_val = Console.ReadLine()

                  Le variable e_val a déjà été définie à la ligne 13. Change par ça :

                  e_val = Console.ReadLine()
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

                    13 janvier 2018 à 11:24:16

                    vanaur a écrit:

                    Ligne 23 :

                    Dim e_val = Console.ReadLine()

                    Le variable e_val a déjà été définie à la ligne 13. Change par ça :

                    e_val = Console.ReadLine()


                    Ah, ça fonctionne, il me semble. 

                    Merci beaucoup ! 

                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 janvier 2018 à 11:26:59

                      Et encore un client satisfait :magicien:

                      Tu peux passer ton sujet en [résolu]

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

                        14 janvier 2018 à 15:02:20

                        Resterait plus qu'à rendre le code légèrement plus propre :

                        • Utiliser Option Strict On pour voir (et corriger) les erreurs signalées
                        • Ne pas avoir un bazillion de variables "globales" (au module) pour rien
                        • Vérifier la saisie (histoire que ça soit bien un nombre)
                        • Virer cette panoplie de If inutiles quand val vaut toujours e_val * 100 (si e_val est valide)
                        • Un seul objet Random est suffisant pour tout le programme (de même les différents rnX dont on pourrait se passer)
                        • Utiliser Int64.MaxValue (ou Long.MaxValue c'est pareil) au lieu d'un nombre sorti d'on ne sait où qui a justement la même valeur
                        • Accessoirement utiliser le formatage plutôt que la concaténation dans l'affichage (mais ça c'est plus du chipotage)
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Censément, quelqu'un de sensé est censé s'exprimer sensément.

                        Sub en application console

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown