Zum Anfang des Programms springen?

  • Ich habe diesen Codeabschnitt:

    Spoiler anzeigen
    [autoit]

    $MFI = _GUICtrlComboGetCurSel($CBM)
    $HFI = _GUICtrlComboGetCurSel($CBH)
    $AFI = _GUICtrlComboGetCurSel($CBA)
    $MFIY = "M"&$MFI
    $HFIY = "H"&$HFI
    $AFIY = "A"&$AFI
    Select
    Case $MFI = 0

    [/autoit]


    Falls die Variable $MFI gleich 0 ist, soll das Programm eine MsgBox anzeigen mit entsprechendem Hinweis und wieder zur Eingabemaske springen.(2.GUI)
    Das Problem: Wie realisiere ich das? (Ein GoTo gibt es ja nicht(mehr))

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)

  • am besten du machst ne Schleife drüber und dann einfach mit dem Befehl ContinueLoop an den Anfang der Schleife springen lassen

    mfg Kyler

  • *Hust* Hab das Komplett-Script vergessen*hust*

    Spoiler anzeigen
    [autoit]

    #cs -----------------------------------------------------
    AutoIt Version: 3.2.8.1
    Von: Fast2

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

    Funktion:DragRacer3 Automatisierung
    #ce -----------------------------------------------------
    ;Anfang
    #region Includes
    #include <GUIConstants.au3>
    #include <GUICombo.au3>
    #endregion
    #region Variablen
    #region GUI1
    Dim $G1;Das Winhandle der 1.GUI
    Dim $W1;Die "Weiter" Button controlID
    Dim $F1;Die "Fertig" Button controlID
    #region GUI2
    Dim $G2;Das Winhandle der 2.GUI
    #endregion
    Dim $R1;Die "Spiel-ist-in-einem-Fenster" Radiobutton control-ID
    Dim $R2;Die "Spiel-ist-in-einem-Tab" Radiobutton conrol-ID
    Dim $B1;Die "Bestätigen" Button control-ID
    Dim $B2;Die "Schließen" Button control-ID
    #region andere Variablen
    Dim $FM = ""
    Dim $c;Nur so
    Dim $x
    Dim $y
    Dim $s;bis hier
    $MA = "Rock|Classic Rock|Hard Rock|Pop|HipHop|Rap"
    $HA = "Speed|Graffiti|Skyline|Cityscape|Muscle|Money|Cash|Base"
    $OA = "Outskirts (0Cr)|Hi-Rev Tuners Section (100 Cr)|'Pump It UP!' Section (100 Cr)|Luxury Section (200 Cr)|Food Court (200 Cr)|Main Floor (500 Cr)|Front Entrance(1000 Cr)"
    $KDO = @AppDataCommonDir&"\XT\KD"
    $KDP = $KDO&"\KOI.ini"
    $OD = DirCreate($KDO)
    #endregion
    #endregion
    If not FileExists($KDP) Then FileInstall("C:\Dokumente und Einstellungen\Fabian\Desktop\AutoItDateien\Hilfsdateien\INIs\KOI.ini", $OD, 1)
    ;GUI1
    $G1 = GUICreate("Drag Racer Trainer", 640, 250)
    GUISetFont(14)
    GUICtrlCreateLabel("Dieser Trainer Automatisiert den Show Off Modus von Drag Racer v3", 40, 20)
    GUICtrlCreateLabel("Dieser Trainer wurde nur für die Auflösung 1280x1024 getestet", 30, 60)
    GUICtrlCreateLabel("Bitte wählen sie im folgenden Fenster aus den Einstellungen", 60, 100)
    $W1 = GUICtrlCreateButton("Fortfahren", 420, 215, 105)
    $F1 = GUICtrlCreateButton("Abbrechen", 525, 215, 100)
    GUISetBkColor(0x0000ED)
    ;GUI2
    $G2 = GUICreate("Drag Racer Trainer Auswahl", 600, 150)
    GUISetBkColor(0x0000ED)
    $CBM = GUICtrlCreateCombo("Bitte wählen sie die Musik", 25, 20, -1 ,-1, BitOr($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST))
    GUICtrlSetData($CBM, $MA)
    $CBH = GUICtrlCreateCombo("Bitte wählen sie den Hintergrund", 25, 65, -1 ,-1, BitOr($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST))
    GUICtrlSetData($CBH, $HA)
    $CBA = GUICtrlCreateCombo("Bitte wählen sie den Ausstellungsort", 25, 110, -1 ,-1, BitOr($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST))
    GUICtrlSetData($CBA, $OA)
    $R1 = GUICtrlCreateRadio("Das Spiel ist in einem Fenster ", 280, 25, 300)
    $R2 = GUICtrlCreateRadio("Das Spiel ist in einem Tab ", 280, 60, 300)
    $B1 = GUICtrlCreateButton("Bestätigen", 425, 100, 110, 35)
    $B2 = GUICtrlCreateButton("Schließen", 280, 100, 110, 35)
    GUICtrlSetFont($R1, 14, 150)
    GUICtrlSetFont($R2, 14, 150)
    GUICtrlSetFont($B1, 14, 150)
    GUICtrlSetFont($B2, 14, 150)
    GUISetState(@SW_Show, $G1)
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $W1
    GUISetState(@SW_Show, $G2)
    GUISetState(@SW_Hide, $G1)
    Case $msg = $B2 Or $msg = $F1 Or $msg = $GUI_Event_Close
    Exit
    Case $msg = $B1
    $CB1 = GUICtrlRead($CBM)
    $CB2 = GUICtrlRead($CBH)
    $CB3 = GUICtrlRead($CBA)
    $RB1 = GUICtrlRead($R1)
    $RB2 = GUICtrlRead($R2)
    Select
    Case $RB1 = 1
    $FoT = 0
    Case $RB2 = 1
    $FoT = 25
    Case Else
    MsgBox(0, "Bitte Wählen", "Sie haben dem Programm nicht mitgeteilt," & @CRLF & "ob das Programm in einem Task ist oder nicht!")
    EndSelect
    $MFI = _GUICtrlComboGetCurSel($CBM)
    $HFI = _GUICtrlComboGetCurSel($CBH)
    $AFI = _GUICtrlComboGetCurSel($CBA)
    $MFIY = "M"&$MFI
    $HFIY = "H"&$HFI
    $AFIY = "A"&$AFI
    $XC = IniRead($KDP, "ACK", "XC", "Der Wert XC in der INI wurde auf eine nicht gültige weise verändert!")
    $MC = IniRead($KDP, "ACK", "MA", "Der Wert MA in der INI wurde auf eine nicht gültige weise verändert!")
    $HC = IniRead($KDP, "ACK", "HA", "Der Wert HA in der INI wurde auf eine nicht gültige weise verändert!")
    $AC = IniRead($KDP, "ACK", "AA", "Der Wert AA in der INI wurde auf eine nicht gültige weise verändert!")
    $MK = IniRead($KDP, "MAK", $MFIY, "Der Wert "&$MFIY&" in der INI wurde auf eine nicht gültige weise verändert!")
    $HK = IniRead($KDP, "HAK", $HFIY, "Der Wert "&$HFIY&" in der INI wurde auf eine nicht gültige weise verändert!")
    $AK = IniRead($KDP, "AAK", $AFIY, "Der Wert "&$AFIY&" in der INI wurde auf eine nicht gültige weise verändert!")
    $NU = $XC&$MC&$HC&$AC&$HK&$AK
    If Not StringIsDigit($NU) Then
    Select
    Case StringIsDigit($XC) = 0
    $FM &= $XC & @CRLF
    ContinueCase
    Case StringIsDigit($MC) = 0
    $FM &= $MC & @CRLF
    ContinueCase
    Case StringIsDigit($HC) = 0
    $FM &= $HC & @CRLF
    ContinueCase
    Case StringIsDigit($AC) = 0
    $FM &= $AC & @CRLF
    ContinueCase
    Case StringIsDigit($MK) = 0
    $FM &= $MK & @CRLF
    ContinueCase
    Case StringIsDigit($HK) = 0
    $FM &= $HK & @CRLF
    ContinueCase
    Case StringIsDigit($AK) = 0
    $FM &= $AK & @CRLF
    EndSelect
    MsgBox(16, "Fehler", $FM)
    Else

    EndIf
    EndSelect
    WEnd

    [/autoit]


    Und falls das Script einigen im Forum bekannt vorkommt: Ich treib mich immer so lange im Forum rum, das ich nicht weiterkomm. :D
    Aber ich hätte nicht gedacht dass ContinueLoop die Schleife fortsetzt(wie ich beim Name vermutet habe) sondern von vorne beginnt. Danke. :thumbup:

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)

    Einmal editiert, zuletzt von Fast2 (29. Januar 2008 um 22:06)

  • also ich mach das imemr so das ich das ganze script in eine 2. schleife setze

    while 1
    while 1
    if $neustart = 1 then
    exitloop
    else
    exit
    endif
    wend
    wend

    wenn man die eine dann beendet beginnt die zweite von vorn...ansonst wird das script beendet

    • Offizieller Beitrag
    Zitat von Fast2

    Aber ich hätte nicht gedacht dass ContinueLoop die Schleife fortsetzt(wie ich beim Name vermutet habe) sondern von vorne beginnt.


    Das ist jetzt eine Fehlinterpretation.
    Von vorn beginnen würde ja bei einer Zählergesteuerten Schleife bedeuten, dass wieder mit dem ersten Zählerwert begonnen wird.
    ContinueLoop bedeutet nichts anderes, als dass ein neuer Schleifendurchlauf beginnt - die Schleife also ohne Berücksichtigung evtl. noch folgenden Codes sofort fortgesetzt wird.
    Falls in einer Zählergesteuerten Schleife ContinueLoop bei Eintritt in die letzte Zählerabarbeitung aktiviert wird, würde dies indem Fall sogar zur sofortigen Beendigung der Schleife führen. ;)