wieder in endlos while schleife zurück, wenn Bediengung nicht erfüllt

  • Hallo,

    habe eine kurze Frage, denke, dass die Lösung einfach ist, aber irgendwie finde ich nichts dazu.

    Also, ich habe eine Formular, dort müssen verschiedene Einträge gemacht werden. Sollte der "weiter" Knopf gedrückt werden, bevor alle Eintragungen gemacht sind, soll eine Fehlermeldung kommen und die Endlosschleife weiterlaufen. Allerdings springt er bei mir nicht zurück, was würdet ihr vorschlagen?

    hier meine Scheile:

    Einmal editiert, zuletzt von Sr_Campos (26. April 2010 um 21:36)

  • Das komplette Skript wäre hilfreich, aber vielleicht klappt's ja so schon

    Spoiler anzeigen
    [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    OnAbbrechen()
    Case $abbrechen
    OnAbbrechen()
    Case $weiter
    if $OptFlag=0 Then
    MsgBox(0, "", "Bitte füllen sie alle Felder aus!")
    else
    $Cnt_size = GUICtrlRead($Input2)
    $Cnt_path = GUICtrlRead($Input1)
    GUIDelete($Form2)
    Form_3()
    EndIf
    Case $pathChoice
    ;...
    Case $zurueck
    GUIDelete($Form_2)
    Form_1()
    EndSwitch
    WEnd

    [/autoit]

    mfg (Auto)Bert

  • Ich glaube du hast da einiges nicht verstanden ...
    Ich würde das ganze in eine Funktion packen, die nach dem ausfüllen wieder aufgerufen wird.
    Oder du machst das ganze ohne Exit loop sondern machst enfach in dem Case das was gemacht werden muss.
    Am besten guckst du dir mal die Hilfe zu Switch an.

    mfg Ubuntu

    Edit: Auto Bert war schneller und ausführlicher.

  • Zitat

    Ich würde das ganze in eine Funktion packen, die nach dem ausfüllen wieder aufgerufen wird.
    Oder du machst das ganze ohne Exit loop sondern machst enfach in dem Case das was gemacht werden muss.

    Das Problem ist ja nicht, dass das Programm was machen soll, sondern der Benutzer. Bevor ich das nächste Formular aufrufe, muss ich einfach sicher gehen, dass gewisse Einträge vorgenommen wurden. Dafür habe ich die Variable $OptFlag eingeführt, solange z.B. diese Information nicht eingetragen ist, soll das Formular auch nicht verlassen werden. Allerdings weiss das Programm ja erst, dass der Benutzer ins nächste Formular will, wenn der 'weiter' button gedrückt wird.

    Ich weiss, dass es programmiertechnisch nicht schön ist, aber im einfachsten Fall habe ich an so etwas wie goto gedacht, dass er einfach wieder in die eigentlich messageloop zurück springt.

    Zitat

    Am besten guckst du dir mal die Hilfe zu Switch an.

    Ich hatte mir die Hilfe schon angeschaut und auch schon gegoogelt, aber nichts gefunden. Will hier nicht ausschliessen, dass ich einen Denkfehler habe, aber viellicht könnte jemand einen Vorschlag machen, wie man so etwas dann sauber implementiert?

  • Zitat

    schau dir meine Lösung an. Falls es nicht klappt poste doch bitte doch ganze Skript,

    Hallo AutoBert,
    entschuldige, ich hatte mich schon gewundert, dass da kein Code dabei war, war aber einfach zu blöd zu sehen, dass ich den aufklappen muss.

    Der Code funktioniert. Macht genau, was ich wollte.

    Vielen Dank für die Hilfe!!