German Problem beim Beenden von Schleife

Discussion in 'German Forum' started by so27, May 2, 2019.

  1. so27

    so27 Active Member Licensed User

    Hallo zusammen,

    ich habe ein kleines Problem mit dem Beenden einer Do/Loop Schleife. In dieser Schleife sollen die Buchstaben von A-Z sich immer wiederholend durchlaufen. Das funktioniert auch einwandfrei. Sobald der Button "Stopp" gedrückt wird, soll die Schleife bei dem zuletzt angezeigten Buchstaben anhalten.

    Das klappt auch, ABER... Nachdem mir der Buchstabe angezeigt wird (MsgBox), welcher eben an der Reihe war, als ich den Stopp-Button gedrückt habe, läuft die Schleife bis zum Buchstaben "Z" weiter.

    Jetzt meine Frage:
    Wie kann ich es bewerkstelligen, dass sobald ich auf den Button "Stopp" klicke, die Schleife komplett unterbrochen wird und der entsprechende Buchstabe angezeigt wird?

    Hier mein Code:
    Code:
    Sub btnStart_Click

        Stopp=
    False
        
        
    Do While True

            
    If Stopp=True Then Exit
            Sleep(
    0)
            
            lblZufallsbuchstabe.Text = 
    "A" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "B" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "C" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "D" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "E" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "F" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "G" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "H" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "I" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "J" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "K" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "L" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "M" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "N" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "O" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "P" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "Q" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "R" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "S" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "T" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "U" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "V" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "W" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "X" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "Y" : Sleep(100)
            lblZufallsbuchstabe.Text = 
    "Z" : Sleep(100)
                
        
    Loop

    End Sub

    Sub btnStopp_Click

        Stopp = 
    True
        
    Msgbox("stopp", lblZufallsbuchstabe.Text)
        
    End Sub
    Hier auch ein Gif zur besseren Visualisierung des Problems:
    https://www.screencast.com/t/bMklsriOZPQE
     
  2. JOTHA

    JOTHA Well-Known Member Licensed User

    ... versuche das mal ...
    Code:
    Sub btnStopp_Click

        Stopp = 
    True
        
    Msgbox("stopp", lblZufallsbuchstabe.Text)
        
    Return
        
    End Sub
     
  3. so27

    so27 Active Member Licensed User

    Hallo @JOTHA ,

    hat leider nicht geklappt.
     
  4. DonManfred

    DonManfred Expert Licensed User

    Informiere dich über Resumeable subs und wie man hier Events realisieren kann.
    Sleep löst ein return in der nutzenden sub aus.
     
  5. DonManfred

    DonManfred Expert Licensed User

    ungetestet aber ich denke so müsste es gehen

    Code:
    Sub btnStart_Click

        Stopp=
    False
        
        
    Do While True

            
    If Stopp=True Then Exit
            Sleep(
    0)
            
            lblZufallsbuchstabe.Text = 
    "A" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "B" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "C" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "D" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "E" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "F" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "G" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "H" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "I" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "J" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "K" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "L" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "M" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "N" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "O" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "P" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "Q" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "R" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "S" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "T" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "U" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "V" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "W" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "X" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "Y" : Sleep(100)
            
    If Stopp=True Then Exit
            lblZufallsbuchstabe.Text = 
    "Z" : Sleep(100)
            
    If Stopp=True Then Exit            
        
    Loop

    End Sub
     
    so27 likes this.
  6. so27

    so27 Active Member Licensed User

  7. DonManfred

    DonManfred Expert Licensed User

    Alternative schleife. Auch viel übersichtlicher

    Code:
    Sub btnStart_Click
        Stopp=
    False
        
    For i=65 To 90
            lblZufallsbuchstabe.Text = 
    Chr(i)
            Sleep(
    100)
            
    If Stopp=True Then Exit
        
    Next
    End Sub
     
    so27, OliverA and Kiffi like this.
  8. OliverA

    OliverA Well-Known Member Licensed User

    ++
    Code:
    Sub btnStart_Click
        
    Dim i As Int = 64
        
    Do While Not(Stopp)
            i = i + 
    1
            
    if i > 90 then i = 65
            lblZufallsbuchstabe.Text = 
    Chr(i)
            Sleep(
    100)
         
    Loop
    End Sub
     
    DonManfred, so27 and Kiffi like this.
  9. so27

    so27 Active Member Licensed User

    Danke
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice