Problem mit "Case"

  • Hallo Leute,

    bei meinem neuen Projekt wollte ich jetzt noch die letzten Schliffe abschließen, doch jetzt macht mir der Editor einen Strich durch die Rechnung, und zwar diesen Fehler hier:

    Zitat

    "Case" statement with no matching "Select"or "Switch" statement.:
    Case $File_Open

    Was ist das genau für ein Fehler?

    Quellcode-Ausschnitt:

    [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1 ;==> Play / Pause
    If _SoundStatus($h_sound) = "playing" Then
    _SoundPause($h_sound)
    ElseIf _SoundStatus($h_sound) = "paused" Then
    _SoundResume($h_sound)
    EndIf
    Case $Button2 ;==> Replay
    If _SoundStatus($h_sound) = "playing" or _SoundStatus($h_sound) = "paused" Then
    _SoundStop($h_sound)
    _SoundPlay($h_sound)

    EndIf
    Case $Button3 ;==> Stop
    _SoundStop($h_sound)
    GUICtrlSetData($Progress1,0)
    WinSetTitle($Form1,"",$ver)
    AdlibUnRegister("ShowSeek")
    AdlibUnRegister("GetVol")
    Case $Button4 ;==> Open
    $f_open = FileOpenDialog("Wähle Audio Datei", @UserProfileDir&"\Music", "Alle Musik Dateien (*.wav;*.mid;*.mp3)|Alle Dateien (*.*)")
    If not @error Then
    _SoundClose($h_sound)
    $h_sound = _SoundOpen($f_open)
    $max_sec = _SoundLength($h_sound,2) *1000
    _SoundPlay($h_sound)
    WinSetTitle($Form1,"",GetFile($f_open))
    AdlibRegister("ShowSeek",250)
    AdlibRegister("GetVol",150)
    Case $File_Open ;==> Open
    $f_open = FileOpenDialog("Wähle Audio Datei", @UserProfileDir&"\Music", "Alle Musik Dateien (*.wav;*.mid;*.mp3)|Alle Dateien (*.*)")
    Case $File_Exit ;==> Close
    Exit
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Könntet ihr mir den Fehler ausbessern, und für die Zukunft sagen, was ich falsch mache?

    Danke! :thumbup:

  • Woher nimmst du denn das Endif in Zeile 38?

    Spoiler anzeigen
    [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1 ;==> Play / Pause
    If _SoundStatus($h_sound) = "playing" Then
    _SoundPause($h_sound)
    ElseIf _SoundStatus($h_sound) = "paused" Then
    _SoundResume($h_sound)
    EndIf
    Case $Button2 ;==> Replay
    If _SoundStatus($h_sound) = "playing" or _SoundStatus($h_sound) = "paused" Then
    _SoundStop($h_sound)
    _SoundPlay($h_sound)

    EndIf
    Case $Button3 ;==> Stop
    _SoundStop($h_sound)
    GUICtrlSetData($Progress1,0)
    WinSetTitle($Form1,"",$ver)
    AdlibUnRegister("ShowSeek")
    AdlibUnRegister("GetVol")
    Case $Button4 ;==> Open
    $f_open = FileOpenDialog("Wähle Audio Datei", @UserProfileDir&"\Music", "Alle Musik Dateien (*.wav;*.mid;*.mp3)|Alle Dateien (*.*)")
    If not @error Then
    _SoundClose($h_sound)
    $h_sound = _SoundOpen($f_open)
    $max_sec = _SoundLength($h_sound,2) *1000
    _SoundPlay($h_sound)
    WinSetTitle($Form1,"",GetFile($f_open))
    AdlibRegister("ShowSeek",250)
    AdlibRegister("GetVol",150)
    endif
    Case $File_Open ;==> Open
    $f_open = FileOpenDialog("Wähle Audio Datei", @UserProfileDir&"\Music", "Alle Musik Dateien (*.wav;*.mid;*.mp3)|Alle Dateien (*.*)")
    Case $File_Exit ;==> Close
    Exit

    EndSwitch
    WEnd

    [/autoit]


    So sollte es laufen

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble

  • In Zeile 26 startest du eine If-Verzweigung welche sich bis Zeile 38 zieht.
    Innerhalb dieser Verzweigung befinden sich aber 2 Case-Verzweigungen welche dadurch da sie ja in der If-Verzweigung liegen keinen Bezug mehr zum Switch $nMsg haben.
    Es fehlt für diese Case-Verzweigungen also noch ein Switch oder Select-Statement.