Next with no matching For Statement

  • Hallo,
    ich habe hier mal meinen eigentlich relativ simplem Programmtext. Leider wird mir jedesmal angezeigt Next with no matching For statement. Wenn ich ein If mit Endif beende läuft das Programm aber nicht richtig.

    [autoit]

    Func Groupwise($Nutzernamenliste)

    Local $i, $Passwort, $error

    [/autoit][autoit][/autoit][autoit]

    For $j = 1 To $Passwortanzahl Step 1 ;~Austesten aller eingegebenen Passwörter
    $Spaltenposition = $j + 1

    [/autoit][autoit][/autoit][autoit]

    ;~Passwortzuordnung
    If $j = 1 Then
    $Passwort = $StdPasw1
    MsgBox(1,"Passwort","Initialisiere Passwort 1")
    EndIf

    [/autoit][autoit][/autoit][autoit]

    If $j = 2 Then
    $Passwort = $StdPasw2
    MsgBox(1,"Passwort","Initialisiere Passwort 2")
    EndIf

    [/autoit][autoit][/autoit][autoit]

    If $j = 3 Then
    $Passwort = $StdPasw3
    MsgBox(1,"Passwort","Initialisiere Passwort 3")
    EndIf

    [/autoit][autoit][/autoit][autoit]

    MsgBox(1,"Passwortdurchlauf","Nummer" & $j & " Passwort "& $Passwort) ;~Testabfrage

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To $Zeilengroesse Step 1 ;~Schleife mit Anzahl der Nutzernamen

    WinClose("Novell GroupWise - Mailbox")
    MsgBox(1,"Nutzernamendurchlauf","Nutzernamendurchlauf "& $i & " "&$Nutzernamenliste[$i][1])
    $error = ShellExecute("C:\Novell\GroupWise\grpwise.exe","/@u-"& $Nutzernamenliste[$i][1]) ;~Ausführen von Gorupwise mit Nutzer als Parameter
    ;~ If $error = 0 Then MsgBox(1,"","")

    [/autoit][autoit][/autoit][autoit]

    WinWaitActive("GroupWise-Passwort")
    Send($Passwort) ;~Sendet das aktuelle Passwort
    Send("{ENTER}")
    Sleep(5000)

    If WinExists("Novell GroupWise - Mailbox") Then
    WinClose("Novell GroupWise - Mailbox")
    Sleep(5000)

    If WinExists("Dialogfeld") Then
    WinClose("Dialogfeld")
    Sleep(2000)
    MsgBox(1,"Fehlgeschlagen","Fehlgeschlagen")

    If WinExists("Novell GroupWise Startup") Then
    WinClose("Novell GroupWise Startup")
    MsgBox(1,"Error","Error")

    EndIf

    [/autoit][autoit][/autoit][autoit]

    Next

    [/autoit][autoit][/autoit][autoit]

    Next

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit]
  • Hallo,

    der Fehler wird in Zeile 294 angezeigt. Ich habe das Programm laufen lassen mit zwei if anweisungen und einer Endif sowie einem If mit einem Endif. Das hat funktioniert. In der Hilfe Datei werden zwar nur zwei Ifs und mit einer Endif verwendet und nicht drei, aber ich nehme dennoch an, dass dies auch funktionieren sollte.
    Das Programm läuft seltsamerweise nicht richtig ab, wenn ich jedes IF einzelnt schließe. Ich bin da echt am verzweifeln ;(

    • Offizieller Beitrag

    Das Programm läuft seltsamerweise nicht richtig ab, wenn ich jedes IF einzelnt schließe. Ich bin da echt am verzweifeln ;(

    Deine Logik können wir nicht nachvollziehen. Deshalb immer sauber einrücken, dann wird das klar.
    Kann ja sein, dass du folgendes möchtest:

    [autoit]

    If WinExists("Novell GroupWise - Mailbox") Then
    WinClose("Novell GroupWise - Mailbox")
    Sleep(5000)
    If WinExists("Dialogfeld") Then
    WinClose("Dialogfeld")
    Sleep(2000)
    MsgBox(1,"Fehlgeschlagen","Fehlgeschlagen")
    EndIf
    EndIf

    [/autoit]

    Aber das können wir nicht erahnen. Du mußt ja wissen, wann welche Dialoge erscheinen und danach deine Programmlogik gestalten.

  • n der Hilfe Datei werden zwar nur zwei Ifs und mit einer Endif verwendet und nicht drei, aber ich nehme dennoch an, dass dies auch funktionieren sollte.
    [...]
    Das Programm läuft seltsamerweise nicht richtig ab, wenn ich jedes IF einzelnt schließe


    Ich nehme an der Denkfehler liegt darin das nur einzeilige If-Then-Verzweigungen kein abschließendes EndIf brauchen.
    Also als Beispiel sowas:

    [autoit]

    If 2>1 Then msgbox(0,"", "Mathe stimmt")

    [/autoit]


    Sobald die Msgbox aber in die nächste Zeile gerät wird es ein mehrzeiliges If-Then-EndIf und muss auch entsprechend mit EndIf geschlossen werden.
    Daher fehlen bei dir, wie schon berichtet, schlicht 2 EndIf.

  • ich schließe mich SeuBo an und sage: Zeile 41 + 46 ==> EndIf und der Tag ist Dein Freund

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)