While, error in expression

  • Ich hab nen RIESEN Problem, Ich programmiere gerade einen Vokabeltrainer (vokabel lern programm :)]
    überall wo in dem Script while steht (ich mal das ein oder andere nicht extrem wichtige weggenommen) meldet SCITE error in expression :( ich weiß nicht mehr weiter , alle whiles sind korrekt geschrieben und durch ein WEND auch wieder beendet, wieso kommt aber immer Fehler in expression.
    (ja ich weiß dass das schließen der While nichts mit dem error zu tun hat :) )

    Einmal editiert, zuletzt von Sundown (5. September 2010 um 15:03)

  • hmm, also soll ich wirklich 141 zeilen code posten? die while schleife geht nämlich von fast ganz oben (unter includes) bis zum Ende, die ist da weil ich noch nen zurückbutton und ein zurück zum start usw machen möchte, aber nagut ich poste hier mal den Code ( ich weiß nicht ob sonns noch iwo fehler sind)

    [autoit]


    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <WindowsConstants.au3>
    #include <ComboConstants.au3>
    #include <ButtonConstants.au3>
    While ;1 offen
    GUICreate("Vokabeltrainer",800,500)
    GuiCtrlCreateLabel("Wählen Sie die Sprache der neuen Vokabeln aus", 10,10)
    $Language = GUICtrlCreateCombo("Englisch", 10, 30,100,-1, $ES_READONLY & $CBS_DROPDOWNLIST )
    GUICtrlSetData(-1,"Latein|Andere")
    $check = GUICtrlCreateButton("Ok",120,30,40,20)
    GUISetState()
    While ;2offen
    $msg=GUIGetMsg()
    Select ;1offen
    Case $msg = $GUI_EVENT_CLOSE
    $Exit = MsgBox(52, "Setup", "Wollen Sie den Vokabeltrainer wirklich beenden?")
    if $Exit = 6 Then
    Exit
    EndIf
    Case $msg = $check
    ExitLoop
    EndSelect ;0 offen
    WEnd ;1 offen
    $selectLang = GUICtrlRead($language)
    $selectLang = GUICtrlRead($language)
    Select ;1 offen
    Case $selectlang = "englisch"
    GUIDelete()

    ;GUI für die Eingabe Englischer Wörter wird erstellt

    GUICreate("Vokabeltrainer", 800, 500)
    GUICtrlCreateLabel("Wählen sie die aktuelle Unit aus", 10, 10)
    $defaultunit = IniRead("C:\Dokumente und Einstellungen\toka\Desktop\Voktrainer\programme\User_Edit.ini", "Englisch", "Unit", "1")
    $Unit = GUICtrlCreateInput($defaultunit, 10, 30, 40, 20)
    GUICtrlCreateUpdown($unit)
    $check = GUICtrlCreateButton("Bestätigen", 320, 240, 120, 30)
    GUISetState()
    while ;2 offen

    $msg = GUIGetMsg()
    Select ;2 offen
    case $msg = $GUI_EVENT_CLOSE
    $Exit = MsgBox(52, "Vokabeltrainer", "Wollen Sie den Vokabeltrainer wirklich beenden?")
    if $Exit = 6 Then
    Exit
    EndIf
    case $msg = $check
    $unit = GUICtrlRead($Unit)
    $iniunit = $unit + 1
    $inidir = @ScriptDir & "\User_Edit.ini"
    IniWrite($inidir, "Englisch", "unit", $iniunit)
    ExitLoop
    EndSelect ;1 offen
    WEnd ;1 offen
    While;2 offen
    GUIDelete()

    GUICreate("Vokabeltrainer", 800,500)
    GUICtrlCreateLabel("Wählen Sie die Wortart aus", 10, 10)
    $WordKind = GUICtrlCreateCombo("Nomen", 10,30,100,20,$ES_READONLY & $CBS_DROPDOWNLIST )
    GUICtrlSetData(-1,"Verben|Adjektive|Andere")
    $check = GUICtrlCreateButton("Ok", 120, 30, 40, 20)
    GUISetState()
    While 1 ; 3 offen
    $msg = GUIGetMsg()
    Select ;2 offen
    case $msg = $GUI_EVENT_CLOSE
    $Exit = MsgBox(52, "Vokabeltrainer", "Wollen Sie den Vokabeltrainer wirklich beenden?")
    if $Exit = 6 Then
    Exit
    EndIf
    Case $msg = $check
    ExitLoop
    EndSelect ;1 offen
    WEnd ;2 offen
    While ;3 offen
    $msg = GUIGetMsg()
    Select ;2 offen
    case $msg = $GUI_EVENT_CLOSE
    $Exit = MsgBox(52, "Setup", "Wollen Sie den Vokabeltrainer wirklich beenden?")
    if $Exit = 6 Then
    Exit
    EndIf
    Case $msg = $check
    $EngWord = GUICtrlRead($Engword)
    $GerWord = GUICtrlRead($GERword)
    IniWrite(@ScriptDir & "\englisch\nomen.ini","unit" & $unit,$engword, $gerword)
    ContinueLoop(2)
    Case $msg = $fertig
    ContinueLoop(3)
    EndSelect ;1 offen
    WEnd ;2 offen
    ;nomeneingabe zu ende
    While ;3 offen
    GUIDelete()
    Select ;2 offen
    Case $selectWordKind = "verben" ;Wenn verben ausgewählt wurde
    GUICreate("vokabeltrainer", 800, 500)
    GUICtrlCreateLabel("Füllen sie die Felder den Vorgaben entsprechend aus.", 10, 10)
    GUICtrlCreateLabel("Wort/Bedeutung auf Englisch:" ,50, 40, 150, 20)
    GUICtrlCreateLabel("Wort/Bedeutung auf Deutsch:" ,550, 40, 150, 20)
    GUICtrlCreateLabel("Gramatik:", 50, 120, 50, 20)
    GUICtrlCreateLabel("Simple past form:", 50, 150, 150,20)
    GUICtrlCreateLabel("Past participle:", 550, 150, 150,20)
    $EngWord = GUICtrlCreateInput("", 50, 70, 150, 20)
    $GerWord = GUICtrlCreateInput("", 550, 70, 150, 20)
    $simplepast = GUICtrlCreateInput("regular",50,180,150,20)
    $pastparticiple = GUICtrlCreateInput("regular", 550, 180, 150, 20)
    $check = GUICtrlCreateButton("Bestätigen", 320, 300, 120, 30)
    $fertig = GUICtrlCreateButton("fertig", 320, 340,120,30)
    GUISetState()
    While ; 4 offen
    $msg = GUIGetMsg()
    Select ;3 offen
    Case $msg = $GUI_EVENT_CLOSE
    $Exit = MsgBox(52, "Vokabeltrainer", "Wollen Sie den Vokabeltrainer wirklich beenden?")
    if $Exit = 6 Then
    Exit
    EndIf
    Case $msg = $check
    $EngWord = GUICtrlRead($EngWord)
    $GerWord = GUICtrlRead($GerWord)
    $simplepast = GUICtrlRead($simplepast)
    $pastparticiple = GUICtrlRead($pastparticiple)
    IniWrite(@scriptdir & "\englisch\verben\infinitive.ini", "unit" & $unit,$engword,$gerword)
    IniWrite(@scriptdir & "\englisch\verben\simplepast.ini", "unit" & $Unit,$engword,$simplepast)
    IniWrite(@scriptdir & "\englisch\verben\pastparticiple.ini","unit" & $unit,$engword,$pastparticiple)
    ContinueLoop(2)
    EndSelect ; 2 offen
    WEnd ;3 offen
    EndSelect ;1 offen
    WEnd ;2 offen
    WEnd ; 1 offen
    Case $selectlang = "latein"
    MsgBox(0, "test", "Latein1")
    Case $selectlang = "andere"
    MsgBox(0, "test", "andere1")
    EndSelect ; 0 offen
    WEnd

    [/autoit]


    die kommis hinter select und while sind, weil ich vorher vergass manche wieder zuzumachen usw, und ich weiß dass das nicht sonderlich sauber programmiert ist glaub ich :)
    und ich hab noch nicht fertig / weiter programmiert :)

  • Wenn dann heist das

    Spoiler anzeigen
    [autoit]


    While 1

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

    Wend

    [/autoit]


    So läuft dein Programm:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <WindowsConstants.au3>
    #include <ComboConstants.au3>
    #include <ButtonConstants.au3>
    Dim $Engword
    Dim $GERword
    Dim $fertig
    Dim $selectWordKind
    Dim $selectWordKind

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

    while 1 ;1 offen
    GUICreate("Vokabeltrainer",800,500)
    GuiCtrlCreateLabel("Wählen Sie die Sprache der neuen Vokabeln aus", 10,10)
    $Language = GUICtrlCreateCombo("Englisch", 10, 30,100,-1, $ES_READONLY & $CBS_DROPDOWNLIST )
    GUICtrlSetData(-1,"Latein|Andere")
    $check = GUICtrlCreateButton("Ok",120,30,40,20)
    GUISetState()
    while 1 ;2offen
    $msg=GUIGetMsg()
    Select ;1offen
    Case $msg = $GUI_EVENT_CLOSE
    $Exit = MsgBox(52, "Setup", "Wollen Sie den Vokabeltrainer wirklich beenden?")
    if $Exit = 6 Then
    Exit
    EndIf
    Case $msg = $check
    ExitLoop
    EndSelect ;0 offen
    WEnd ;1 offen
    $selectLang = GUICtrlRead($language)
    $selectLang = GUICtrlRead($language)
    Select ;1 offen
    Case $selectlang = "englisch"
    GUIDelete()

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

    ;GUI für die Eingabe Englischer Wörter wird erstellt

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

    GUICreate("Vokabeltrainer", 800, 500)
    GUICtrlCreateLabel("Wählen sie die aktuelle Unit aus", 10, 10)
    $defaultunit = IniRead("C:\Dokumente und Einstellungen\toka\Desktop\Voktrainer\programme\User_Edit.ini", "Englisch", "Unit", "1")
    $Unit = GUICtrlCreateInput($defaultunit, 10, 30, 40, 20)
    GUICtrlCreateUpdown($unit)
    $check = GUICtrlCreateButton("Bestätigen", 320, 240, 120, 30)
    GUISetState()
    while 1 ;2 offen

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

    $msg = GUIGetMsg()
    Select ;2 offen
    case $msg = $GUI_EVENT_CLOSE
    $Exit = MsgBox(52, "Vokabeltrainer", "Wollen Sie den Vokabeltrainer wirklich beenden?")
    if $Exit = 6 Then
    Exit
    EndIf
    case $msg = $check
    $unit = GUICtrlRead($Unit)
    $iniunit = $unit + 1
    $inidir = @ScriptDir & "\User_Edit.ini"
    IniWrite($inidir, "Englisch", "unit", $iniunit)
    ExitLoop
    EndSelect ;1 offen
    WEnd ;1 offen
    while 1;2 offen
    GUIDelete()

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

    GUICreate("Vokabeltrainer", 800,500)
    GUICtrlCreateLabel("Wählen Sie die Wortart aus", 10, 10)
    $WordKind = GUICtrlCreateCombo("Nomen", 10,30,100,20,$ES_READONLY & $CBS_DROPDOWNLIST )
    GUICtrlSetData(-1,"Verben|Adjektive|Andere")
    $check = GUICtrlCreateButton("Ok", 120, 30, 40, 20)
    GUISetState()
    while 1 ; 3 offen
    $msg = GUIGetMsg()
    Select ;2 offen
    case $msg = $GUI_EVENT_CLOSE
    $Exit = MsgBox(52, "Vokabeltrainer", "Wollen Sie den Vokabeltrainer wirklich beenden?")
    if $Exit = 6 Then
    Exit
    EndIf
    Case $msg = $check
    ExitLoop
    EndSelect ;1 offen
    WEnd ;2 offen
    while 1 ;3 offen
    $msg = GUIGetMsg()
    Select ;2 offen
    case $msg = $GUI_EVENT_CLOSE
    $Exit = MsgBox(52, "Setup", "Wollen Sie den Vokabeltrainer wirklich beenden?")
    if $Exit = 6 Then
    Exit
    EndIf
    Case $msg = $check
    $EngWord = GUICtrlRead($Engword)
    $GerWord = GUICtrlRead($GERword)
    IniWrite(@ScriptDir & "\englisch\nomen.ini","unit" & $unit,$engword, $gerword)
    ContinueLoop(2)
    Case $msg = $fertig
    ContinueLoop(3)
    EndSelect ;1 offen
    WEnd ;2 offen
    ;nomeneingabe zu ende
    while 1 ;3 offen
    GUIDelete()
    Select ;2 offen
    Case $selectWordKind = "verben" ;Wenn verben ausgewählt wurde
    GUICreate("vokabeltrainer", 800, 500)
    GUICtrlCreateLabel("Füllen sie die Felder den Vorgaben entsprechend aus.", 10, 10)
    GUICtrlCreateLabel("Wort/Bedeutung auf Englisch:" ,50, 40, 150, 20)
    GUICtrlCreateLabel("Wort/Bedeutung auf Deutsch:" ,550, 40, 150, 20)
    GUICtrlCreateLabel("Gramatik:", 50, 120, 50, 20)
    GUICtrlCreateLabel("Simple past form:", 50, 150, 150,20)
    GUICtrlCreateLabel("Past participle:", 550, 150, 150,20)
    $EngWord = GUICtrlCreateInput("", 50, 70, 150, 20)
    $GerWord = GUICtrlCreateInput("", 550, 70, 150, 20)
    $simplepast = GUICtrlCreateInput("regular",50,180,150,20)
    $pastparticiple = GUICtrlCreateInput("regular", 550, 180, 150, 20)
    $check = GUICtrlCreateButton("Bestätigen", 320, 300, 120, 30)
    $fertig = GUICtrlCreateButton("fertig", 320, 340,120,30)
    GUISetState()
    while 1 ; 4 offen
    $msg = GUIGetMsg()
    Select ;3 offen
    Case $msg = $GUI_EVENT_CLOSE
    $Exit = MsgBox(52, "Vokabeltrainer", "Wollen Sie den Vokabeltrainer wirklich beenden?")
    if $Exit = 6 Then
    Exit
    EndIf
    Case $msg = $check
    $EngWord = GUICtrlRead($EngWord)
    $GerWord = GUICtrlRead($GerWord)
    $simplepast = GUICtrlRead($simplepast)
    $pastparticiple = GUICtrlRead($pastparticiple)
    IniWrite(@scriptdir & "\englisch\verben\infinitive.ini", "unit" & $unit,$engword,$gerword)
    IniWrite(@scriptdir & "\englisch\verben\simplepast.ini", "unit" & $Unit,$engword,$simplepast)
    IniWrite(@scriptdir & "\englisch\verben\pastparticiple.ini","unit" & $unit,$engword,$pastparticiple)
    ContinueLoop(2)
    EndSelect ; 2 offen
    WEnd ;3 offen
    EndSelect ;1 offen
    WEnd ;2 offen
    WEnd ; 1 offen
    Case $selectlang = "latein"
    MsgBox(0, "test", "Latein1")
    Case $selectlang = "andere"
    MsgBox(0, "test", "andere1")
    EndSelect ; 0 offen
    WEnd

    [/autoit]


    Achso Variablen werden eigentlich auch deklariert.

    MfG
    Der_Doc

  • Zitat

    Sonst ist dir aber schon klar das While eine Zählschleife ist ja ???

    Neeiin, aber nur weil ich grad nicht weiß, was eine zählschleife ist :wacko:

  • Wenn der Thread gelöst ist dann bitte #1 Beitrag bearbeiten und den Präfix auf gelöst stellen.

    Neeiin, aber nur weil ich grad nicht weiß, was eine zählschleife ist :wacko:


    Schau dir mal das an

    [autoit]

    For $x = 0 To 5
    MsgBox(0, "Zähl Schleife vorwärts", $x)
    Next
    For $x = 5 To 0 Step -1
    MsgBox(0, "Zähl Schleife rückwärts", $x)
    Next

    [/autoit]