Gestion des boucles do & for

PTuner - Modifié par PTuner le 30/07/2013 à 13:53
 cs_Galain - 31 juil. 2013 à 12:28
Bonjour,
J'ai un petit souci en effet je veux que l'application console affiche un message avec des points de suspension (qui évoluent de cette façon en boucle [.] [..] [...] ) ce code fonctionne pour les deux premières boucles mais à la troisième le code est carrément exécutée en brut (avec les trois événements en même temps). Quelqu'un a-t'il une soluce?
        Dim point As Integer
        Dim point2 As Integer
        Dim point3 As Integer
        Dim text As String = "N'éteint pas la console!"
        Dim schlaftVar As Long = 1000
        Dim schlaftVar2 As Long = 250
        Dim i As Integer
        For i = 1 To 38
            Console.ForegroundColor = ConsoleColor.Red
            Console.Write(text)
            Console.Write(vbCrLf & i)
            Console.Write(vbCrLf & "Vérification du registre")
            Do Until i <= 10
                For point = 1 To 3
                    If point = 1 Then Console.Write(".")
                    If point = 2 Then Console.Write(".")
                    If point = 3 Then Console.Write(".")
                    If i > 10 Then Exit Do
                    System.Threading.Thread.Sleep(schlaftVar2)
                Next point
            Loop
            Console.Write(vbCrLf & "Installation")
            Do Until 11 < i < 30
                For point2 = 1 To 3
                    If point2 = 1 Then Console.Write(".")
                    If point2 = 2 Then Console.Write(".")
                    If point2 = 3 Then Console.Write(".")
                    If i > 30 Then Exit Do
                    System.Threading.Thread.Sleep(schlaftVar2)
                Next point2
            Loop
            Console.Write(vbCrLf & "Finalisation")
            Do Until 31 < i < 37
                For point3 = 1 To 3
                    If point3 = 1 Then Console.Write(".")
                    If point3 = 2 Then Console.Write(".")
                    If point3 = 3 Then Console.Write(".")
                    If i > 37 Then Exit Do
                    System.Threading.Thread.Sleep(schlaftVar2)
                Next point3
            Loop
            System.Threading.Thread.Sleep(schlaftVar)
            Console.Clear()
        Next i

8 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
30 juil. 2013 à 18:43
Do Until 11 < i AND i < 30

1
c'est bon j'ai résolu le truc la blonderie que j'ai fait je m'en suis aperçu en relisant le code^^
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
30 juil. 2013 à 13:45
Bonjour,

 Do Until 11 < i < 30


La programmation, ce n'est pas que de smaths, ta condition n'a pas de sens, utilises des opérateurs logiques (AND, OR, ...) et sépares ta condition en 2.
0
Tu aurais fait quoi dans ce cas-ci car pour moi utiliser des égalités mathématiques me semble inévitable car la "grande" boucle for reçoit une valeur (1) à chaque bouclage.
0
On peut le faire de deux manières j'ai modifié mon code là. J'essayerai la première après.
 Dim punkt As Integer                                'alle abänderlich
        Dim punkt2 As Integer
        Dim punkt3 As Integer
        Dim test As Boolean
        Dim text As String = "N'éteint pas la console!"
        Dim schlaftVar As Long = 750
        Dim schlaftVar2 As Long = 250
        Dim i As Integer
        Dim j As Integer
        Dim k As Integer
        Console.ForegroundColor = ConsoleColor.Red
        For i = 1 To 33                                    'die schleife (hat drei schleife innere) 
            Console.Write(text)
            Console.Write(vbCrLf & i & "%")
            Console.Write(vbCrLf & "Vérification du registre")
            For punkt = 1 To 3
                If punkt = 1 Then Console.Write(".")
                If punkt = 2 Then Console.Write(".")
                If punkt = 3 Then Console.Write(".")
                System.Threading.Thread.Sleep(schlaftVar2)
            Next punkt
            System.Threading.Thread.Sleep(schlaftVar)
            Console.Clear()
        Next i
        For j = 33 To 66
            Console.Write(text)
            Console.Write(vbCrLf & j & "%")
            Console.Write(vbCrLf & "Installation")
            For punkt2 = 1 To 3
                If punkt2 = 1 Then Console.Write(".")
                If punkt2 = 2 Then Console.Write(".")
                If punkt2 = 3 Then Console.Write(".")
                System.Threading.Thread.Sleep(schlaftVar2)
            Next punkt2
            System.Threading.Thread.Sleep(schlaftVar)
            Console.Clear()
        Next j
        For k = 66 To 100
            Console.Write(text)
            Console.Write(vbCrLf & k & "%")
            Console.Write(vbCrLf & "Finalisation")
            For punkt3 = 1 To 3
                If punkt3 = 1 Then Console.Write(".")
                If punkt3 = 2 Then Console.Write(".")
                If punkt3 = 3 Then Console.Write(".")
                System.Threading.Thread.Sleep(schlaftVar2)
            Next punkt3
            System.Threading.Thread.Sleep(schlaftVar)
            Console.Clear()
        Next k
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
 If punkt = 1 Then Console.Write(".")
If punkt = 2 Then Console.Write(".")
If punkt = 3 Then Console.Write(".")


remplace ces instructions par
Console.Write(".")


Les 3 if ne servent à rien
0
je ne sais pas si tu as remarqué mais j'ai placé un system.thread.sleep dans le for pour que à chaque "palier" il prenne 250 millisecondes sinon c'est instantanée et ce n'est pas mon objectif (en fait je veux qu'il y ait un retard entre chaque "phase" de l'affiche des points de suspensions regarde du côté des applis dos qui font ce genre d'affichage, tu as du déjà en voir certainement.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
31 juil. 2013 à 09:57
Salut

Oui, Un Select Case i aurait été plus approprié que tes fausses boucles Do-While (dans ton code initial)
0
je ne t'ai jamais dit de supprimer le System.Thread.Sleep

 For punkt = 1 To 3
If punkt = 1 Then Console.Write(".")
If punkt = 2 Then Console.Write(".")
If punkt = 3 Then Console.Write(".")
System.Threading.Thread.Sleep(schlaftVar2)
Next punkt<code>

For punkt = 1 To 3
Console.Write(".")
System.Threading.Thread.Sleep(schlaftVar2)
Next punkt</code>

ceci est valable 3 fois
0
je ne t'ai jamais dit de supprimer le System.Thread.Sleep

 For punkt = 1 To 3
    If punkt = 1 Then Console.Write(".")
    If punkt = 2 Then Console.Write(".")
    If punkt = 3 Then Console.Write(".")
    System.Threading.Thread.Sleep(schlaftVar2)
    Next punkt<code>

<code>
For punkt = 1 To 3
Console.Write(".")
System.Threading.Thread.Sleep(schlaftVar2)
Next punkt
0
Rejoignez-nous