Schleifen Problem

  • Hallo, ich habe gestern ein fast 300-Zeiliges Script fertiggestellt. Dann wollte ich es ausführen lassen, aber dann kam die Fehlermeldung:

    (270): ==> "While" statement has no matching "Wend" statement.:

    Dann habe ich in Zeile 271 noch ein Wend hingeschrieben. Dann kommt die Meldung:

    (271) : ==> "Wend" statement with no matching "While" statement.:

    Aber was will er denn von mir ?(


    MfG

    AutoGhost

  • OK, also ich muss zugeben, das Script ist etwas unübersichtlich ;)
    Aber ich bin eben auch noch nicht soo lange dabei =)

    Also hier das Script, und es kann sein, dass da jetzt unten eine ganze Menge fehlt / In der falschen Reihenfolge geschlossen wurde, weil da hab ich gestern ein bisschen viel noch versucht es hinzubekommen : :whistling:


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

    ;~ Gleichmäßig Beschleunigte Bewegung | Gleichmäßig Beschleunigte Bewegung | Gleichmäßig Beschleunigte Bewegung | Gleichmäßig Beschleunigte Bewegung

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

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\xp\desktop\physik\kxf's\s-v-a-t ''was wird gesucht''.kxf
    $Form2 = GUICreate("Form1", 364, 299, 218, 163)
    $Label1 = GUICtrlCreateLabel("Was ist gesucht?", 136, 24, 113, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $a2 = GUICtrlCreateRadio("Beschleunigung", 48, 152, 105, 25)
    $s2 = GUICtrlCreateRadio("Strecke", 48, 72, 97, 25)
    $v2 = GUICtrlCreateRadio("Geschwindigkeit", 48, 113, 97, 25)
    $t2 = GUICtrlCreateRadio("Zeit", 48, 194, 97, 25)
    $OK = GUICtrlCreateButton("OK", 48, 240, 73, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $OK
    ;~ Strecke wird berechnet
    If BitAND(GUICtrlRead( $s2 ), $GUI_Checked) Then

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

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\xp\desktop\physik\kxf's\v und t gegeben.kxf
    $Form1_1 = GUICreate("Kinematik", 392, 206, 261, 393)
    $a3 = GUICtrlCreateInput("", 104, 72, 185, 21)
    $t3 = GUICtrlCreateInput("", 104, 104, 185, 21)
    $Label1 = GUICtrlCreateLabel("Was ist gegeben?", 120, 24, 113, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("a = ", 80, 72, 24, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("t = ", 80, 104, 20, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $OK = GUICtrlCreateButton("OK", 160, 152, 65, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $OK
    $a2= guictrlread($a3)
    $t2= guictrlread($t3)

    Select

    Case $a2 <= 0

    msgbox ( 64, "Error", "a und t müssen positiv sein! " )


    Case $t2 <= 0

    msgbox ( 64, "Error", "a und t müssen positiv sein! " )


    Case Else

    $Strecke2 = 0.5*$a2*$t2^2


    MsgBox ( 64, "","Der zurückgelegte Weg betraegt "&$Strecke2&" Meter")

    EndSelect

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

    EndSwitch
    WEnd

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

    ;~ Geschwindigkeit wird berechnet
    ElseIf BitAND(GUICtrlRead( $v2 ), $GUI_Checked) Then


    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\xp\desktop\physik\kxf's\v und t gegeben.kxf
    $Form1_1 = GUICreate("Kinematik", 392, 206, 261, 393)
    $a3 = GUICtrlCreateInput("", 104, 72, 185, 21)
    $t3 = GUICtrlCreateInput("", 104, 104, 185, 21)
    $Label1 = GUICtrlCreateLabel("Was ist gegeben?", 120, 24, 113, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("a = ", 80, 72, 24, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("t = ", 80, 104, 20, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $OK = GUICtrlCreateButton("OK", 160, 152, 65, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $OK
    $a2= guictrlread($a3)
    $t2= guictrlread($t3)

    Select

    Case $s2 <= 0

    msgbox ( 64, "Error", "a und t müssen positiv sein! " )


    Case $t2 <= 0

    msgbox ( 64, "Error", "a und t müssen positiv sein! " )


    Case Else

    $Geschwindigkeit2 = $a2*$t2

    MsgBox ( 64, "","Die Geschwindigkeit betraegt "&$Geschwindigkeit2&" Meter pro Sekunde")

    EndSelect

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

    EndSwitch
    WEnd
    EndIf

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

    ;~ Zeit wird berechnet
    If BitAND(GUICtrlRead( $t2 ), $GUI_Checked) Then

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

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 299, 170, 193, 125)
    $va = GUICtrlCreateRadio(" v und a", 72, 48, 153, 25)
    $sa = GUICtrlCreateRadio(" s und a", 72, 72, 153, 25)
    $Label1 = GUICtrlCreateLabel("Was ist gegeben?", 96, 16, 113, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $OK = GUICtrlCreateButton("OK", 112, 112, 73, 33, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    Case $OK

    If BitAND(GUICtrlRead( $va ), $GUI_Checked) Then


    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\xp\desktop\physik\kxf's\v und t gegeben.kxf
    $Form1_1 = GUICreate("Kinematik", 392, 206, 261, 393)
    $v3 = GUICtrlCreateInput("", 104, 72, 185, 21)
    $a3 = GUICtrlCreateInput("", 104, 104, 185, 21)
    $Label1 = GUICtrlCreateLabel("Was ist gegeben?", 120, 24, 113, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("v = ", 80, 72, 24, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("a = ", 80, 104, 20, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $OK = GUICtrlCreateButton("OK", 160, 152, 65, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $OK


    $v2= guictrlread($v3)
    $a2= guictrlread($a3)

    Select

    Case $v2 <= 0

    msgbox ( 64, "Error", "v und a müssen positiv sein! " )


    Case $a2 <= 0

    msgbox ( 64, "Error", "v und a müssen positiv sein! " )


    Case Else

    $Zeitva = $v2/$a2

    MsgBox ( 64, "","Die Geschwindigkeit betraegt "&$Zeitva&" Sekunden")

    EndSelect

    EndSwitch

    WEnd

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

    ElseIf BitAND(GUICtrlRead( $sa ), $GUI_Checked) Then

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

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\xp\desktop\physik\kxf's\v und t gegeben.kxf
    $Form1_1 = GUICreate("Kinematik", 392, 206, 261, 393)
    $s3 = GUICtrlCreateInput("", 104, 72, 185, 21)
    $a3 = GUICtrlCreateInput("", 104, 104, 185, 21)
    $Label1 = GUICtrlCreateLabel("Was ist gegeben?", 120, 24, 113, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("s = ", 80, 72, 24, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("a = ", 80, 104, 20, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $OK = GUICtrlCreateButton("OK", 160, 152, 65, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $OK
    $s2= guictrlread($s3)
    $a2= guictrlread($a3)

    Select

    Case $s2 <= 0

    msgbox ( 64, "Error", "a und s müssen positiv sein! " )


    Case $a2 <= 0

    msgbox ( 64, "Error", "a und s müssen positiv sein! " )


    Case Else

    $Zeitsa = Sqrt ( 2*$s2/$a2 )

    MsgBox ( 64, "","Die Geschwindigkeit betraegt "&$Zeitsa&" Sekunden")

    EndSelect

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

    EndSwitch
    WEnd
    EndIf
    WEnd

    [/autoit]

    Irgned was stimmte da auch nicht in Zeile 18 und 20 da wurde auch irgend was nciht geschlossen...


    PS: Die Berechnung für die Beschleunigung die fehlt noch, aber ich wollte erst einmal, dass es bis dahin funktioniert...

    Warum da jetzt soviel Grau ist, weiß ich auch nicht 8|

    MfG

    AutoGhost

    Einmal editiert, zuletzt von AutoGhost (22. November 2008 um 12:14)

  • Ich habe mir den Code mal angesehen.

    IF 26 139 162
    ElseIF 85 216
    EndIf 136 269

    Ich würde erstmal behaupten dein IF von Zeile 162 wird nicht mit EndIf abgeschlossen.
    Es hat sich bewährt, bei jeden If, While, Do, usw. einen TAB einzurücken und bei den
    Schlüsselworten Else, EndIf, Wend, Until den TAB wieder nach außen zu gehen. So sieht
    man schnell (wenn man es ordentlich durchführt), das man am Ende nicht wieder passend
    am linken Rand ankommt.

    Edit: Das mit dem "Grau" ist auch zu erklären.
    In der Zeile 90 begint mit dem einfachen Hochkomma in "kxf's" ein String der dann in Zeile 167 mit dem wieder enthaltenen Hochkomman endet. Die Darstellung interpretiert diesen Code deshalb als String. Gewöhne es Dir besser ab, Pfade mit Sonderzeichen zu versehen. Gibt nur Ärger !

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    3 Mal editiert, zuletzt von Micha_he (22. November 2008 um 14:03)

  • Aber ich schließe die If Schleife doch in 269 oder ?
    Und außerdem meckert er ja hauptsächlich über nicht geschlossene Whiel Schleifen...

    Mfg

    AutoGhost

    • Offizieller Beitrag

    Mal am Rande: Ich weiß, dass es in einigen Sprachen als Standard gilt, nach jeder Codezeile eine Leerzeile einzufügen. Den Sinn dieses Tuns konnte ich noch nie erkennen. Damit zerstörst du jede Übersicht in einem Skript. Und wenn es dann sogar, wie hier, 2 Leerzeilen sind... :wacko:

  • Spoiler anzeigen
    [autoit]

    ;~ Gleichmäßig Beschleunigte Bewegung | Gleichmäßig Beschleunigte Bewegung | Gleichmäßig Beschleunigte Bewegung | Gleichmäßig Beschleunigte Bewegung

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

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\xp\desktop\physik\kxf's\s-v-a-t ''was wird gesucht''.kxf
    $Form2 = GUICreate("Form1", 364, 299, 218, 163)
    $Label1 = GUICtrlCreateLabel("Was ist gesucht?", 136, 24, 113, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $a2 = GUICtrlCreateRadio("Beschleunigung", 48, 152, 105, 25)
    $s2 = GUICtrlCreateRadio("Strecke", 48, 72, 97, 25)
    $v2 = GUICtrlCreateRadio("Geschwindigkeit", 48, 113, 97, 25)
    $t2 = GUICtrlCreateRadio("Zeit", 48, 194, 97, 25)
    $OK = GUICtrlCreateButton("OK", 48, 240, 73, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $OK
    ;~ Strecke wird berechnet
    If BitAND(GUICtrlRead($s2), $GUI_Checked) Then
    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\xp\desktop\physik\kxf's\v und t gegeben.kxf
    $Form1_1 = GUICreate("Kinematik", 392, 206, 261, 393)
    $a3 = GUICtrlCreateInput("", 104, 72, 185, 21)
    $t3 = GUICtrlCreateInput("", 104, 104, 185, 21)
    $Label1 = GUICtrlCreateLabel("Was ist gegeben?", 120, 24, 113, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("a = ", 80, 72, 24, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("t = ", 80, 104, 20, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $OK = GUICtrlCreateButton("OK", 160, 152, 65, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $OK
    $a2 = GUICtrlRead($a3)
    $t2 = GUICtrlRead($t3)
    Select
    Case $a2 <= 0
    MsgBox(64, "Error", "a und t müssen positiv sein! ")
    Case $t2 <= 0
    MsgBox(64, "Error", "a und t müssen positiv sein! ")
    Case Else
    $Strecke2 = 0.5 * $a2 * $t2 ^ 2
    MsgBox(64, "", "Der zurückgelegte Weg betraegt " & $Strecke2 & " Meter")
    EndSelect
    EndSwitch
    WEnd

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

    ;~ Geschwindigkeit wird berechnet
    ElseIf BitAND(GUICtrlRead($v2), $GUI_Checked) Then
    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\xp\desktop\physik\kxf's\v und t gegeben.kxf
    $Form1_1 = GUICreate("Kinematik", 392, 206, 261, 393)
    $a3 = GUICtrlCreateInput("", 104, 72, 185, 21)
    $t3 = GUICtrlCreateInput("", 104, 104, 185, 21)
    $Label1 = GUICtrlCreateLabel("Was ist gegeben?", 120, 24, 113, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("a = ", 80, 72, 24, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("t = ", 80, 104, 20, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $OK = GUICtrlCreateButton("OK", 160, 152, 65, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $OK
    $a2 = GUICtrlRead($a3)
    $t2 = GUICtrlRead($t3)
    Select
    Case $s2 <= 0
    MsgBox(64, "Error", "a und t müssen positiv sein! ")
    Case $t2 <= 0
    MsgBox(64, "Error", "a und t müssen positiv sein! ")
    Case Else
    $Geschwindigkeit2 = $a2 * $t2
    MsgBox(64, "", "Die Geschwindigkeit betraegt " & $Geschwindigkeit2 & " Meter pro Sekunde")
    EndSelect
    EndSwitch
    WEnd
    EndIf

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

    ;~ Zeit wird berechnet
    If BitAND(GUICtrlRead($t2), $GUI_Checked) Then
    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 299, 170, 193, 125)
    $va = GUICtrlCreateRadio(" v und a", 72, 48, 153, 25)
    $sa = GUICtrlCreateRadio(" s und a", 72, 72, 153, 25)
    $Label1 = GUICtrlCreateLabel("Was ist gegeben?", 96, 16, 113, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $OK = GUICtrlCreateButton("OK", 112, 112, 73, 33, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $OK
    If BitAND(GUICtrlRead($va), $GUI_Checked) Then
    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\xp\desktop\physik\kxf's\v und t gegeben.kxf
    $Form1_1 = GUICreate("Kinematik", 392, 206, 261, 393)
    $v3 = GUICtrlCreateInput("", 104, 72, 185, 21)
    $a3 = GUICtrlCreateInput("", 104, 104, 185, 21)
    $Label1 = GUICtrlCreateLabel("Was ist gegeben?", 120, 24, 113, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("v = ", 80, 72, 24, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("a = ", 80, 104, 20, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $OK = GUICtrlCreateButton("OK", 160, 152, 65, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $OK
    $v2 = GUICtrlRead($v3)
    $a2 = GUICtrlRead($a3)
    Select
    Case $v2 <= 0
    MsgBox(64, "Error", "v und a müssen positiv sein! ")
    Case $a2 <= 0
    MsgBox(64, "Error", "v und a müssen positiv sein! ")
    Case Else
    $Zeitva = $v2 / $a2
    MsgBox(64, "", "Die Geschwindigkeit betraegt " & $Zeitva & " Sekunden")
    EndSelect
    EndSwitch
    WEnd
    ElseIf BitAND(GUICtrlRead($sa), $GUI_Checked) Then
    #include <GUIConstants.au3>

    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\xp\desktop\physik\kxf's\v und t gegeben.kxf
    $Form1_1 = GUICreate("Kinematik", 392, 206, 261, 393)
    $s3 = GUICtrlCreateInput("", 104, 72, 185, 21)
    $a3 = GUICtrlCreateInput("", 104, 104, 185, 21)
    $Label1 = GUICtrlCreateLabel("Was ist gegeben?", 120, 24, 113, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("s = ", 80, 72, 24, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("a = ", 80, 104, 20, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $OK = GUICtrlCreateButton("OK", 160, 152, 65, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $OK
    $s2 = GUICtrlRead($s3)
    $a2 = GUICtrlRead($a3)
    Select
    Case $s2 <= 0
    MsgBox(64, "Error", "a und s müssen positiv sein! ")
    Case $a2 <= 0
    MsgBox(64, "Error", "a und s müssen positiv sein! ")
    Case Else
    $Zeitsa = Sqrt(2 * $s2 / $a2)
    MsgBox(64, "", "Die Geschwindigkeit betraegt " & $Zeitsa & " Sekunden")
    EndSelect
    EndSwitch
    WEnd
    EndIf
    EndSwitch
    WEnd
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Du hast vergessen einige Schleifen zu schließen. Wie ich ja schon schrieben oben. Ich habe einfach mal Tidy drüberlaufen lassen. Der macht dir automatisch die TABs. Danach wars kein Problem den/die Fehler zu finden.

    • Offizieller Beitrag

    Warum erstellst du die GUI nicht am Anfang und weist je nach Auswahl unterschiedliche Label zu? Würde den Code um etwa 70 % kürzen und auch wesentlich übersichtlicher werden. Außerdem ist es kein sehr guter Stil Includes und GUI-Erstellung innerhalb von Schleifen auszuführen.

  • Vielen Dank, vor allem an Casten8 :thumbup:

    Könntest du das vllt. ncoh einmal erläutern was du meinst Bugfix, also das mit den Labeln, das habe icih noch nciht verstanden.

    Kann man dieses Tidy irgend wo herunterladen? Das hört sich sehr praktisch an.


    MfG

    AutoGhost

    Einmal editiert, zuletzt von AutoGhost (22. November 2008 um 16:04)

    • Offizieller Beitrag

    Könntest du das vllt. ncoh einmal erläutern was du meinst Bugfix, also das mit den Labeln, das habe icih noch nciht verstanden.

    OK, hier mal ein Muster, wie sowas geht. Du definierst nur einmal die GUI und wechselst nur die Bezeichnungen aus. In Abhängigkeit der gewählten "Version", die du lädst, wertest du die Einträge aus den Inputs, Buttons etc. aus.

    Spoiler anzeigen
    [autoit]

    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>
    Global $arLabel[3][3] = [ _
    ['Sub1 - Label1','Sub1 - Label2','OK'], _
    ['Sub2 - Label1','Sub2 - Label2','Bla'], _
    ['Sub3 - Label1','Sub3 - Label2','Aha']]
    Global $indxSub

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

    $GUI = GUICreate('Master')
    $b1 = GUICtrlCreateButton('Sub1', 10,10,50,20)
    $b2 = GUICtrlCreateButton('Sub2', 10,40,50,20)
    $b3 = GUICtrlCreateButton('Sub3', 10,70,50,20)

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

    $Sub = GUICreate('Sub')
    $l1 = GUICtrlCreateLabel('', 20, 33, 120, 17)
    $l2 = GUICtrlCreateLabel('', 20, 63, 120, 17)
    $i1 = GUICtrlCreateInput('', 130, 30, 80)
    $i2 = GUICtrlCreateInput('', 130, 60, 80)
    $b4 = GUICtrlCreateButton('', 20, 100, 40)

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

    GUISetState(@SW_SHOW, $GUI)

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

    While True
    $msg = GUIGetMsg(1)
    Switch $msg[1]
    Case $GUI
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE
    Exit
    Case $b1
    $indxSub = 0
    GUICtrlSetData($l1, $arLabel[0][0])
    GUICtrlSetData($l2, $arLabel[0][1])
    GUICtrlSetData($b4, $arLabel[0][2])
    GUISetState(@SW_SHOW, $Sub)
    Case $b2
    $indxSub = 1
    GUICtrlSetData($l1, $arLabel[1][0])
    GUICtrlSetData($l2, $arLabel[1][1])
    GUICtrlSetData($b4, $arLabel[1][2])
    GUISetState(@SW_SHOW, $Sub)
    Case $b3
    $indxSub = 2
    GUICtrlSetData($l1, $arLabel[2][0])
    GUICtrlSetData($l2, $arLabel[2][1])
    GUICtrlSetData($b4, $arLabel[2][2])
    GUISetState(@SW_SHOW, $Sub)
    EndSwitch
    Case $Sub
    Switch $msg[0]
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE, $Sub)
    Case $b4
    Switch $indxSub
    Case 0
    MsgBox(0, '', 'Button auf Sub-1 geklickt')
    Case 1
    MsgBox(0, '', 'Button auf Sub-2 geklickt')
    Case 2
    MsgBox(0, '', 'Button auf Sub-3 geklickt')
    EndSwitch
    EndSwitch
    EndSwitch
    WEnd

    [/autoit]