Verständnisproblem bzw suche Alternative

  • Hallo,
    also ich hab mal ein wenig herumgebastelt und wollte mal etwas mit "or" ausprobieren.
    In der Hilfe hab ich nichts über or gefunden,bzw sie hat mir gesagt, dass sie danach nicht suchen kann.
    Hat zum Anfang alles geklappt aber je mehr "or"s ich verwendet habe, desto schlimmer wurde es.
    Schaut euch mal das hier an(Die MsgBox kommt, obwohl das eig garnicht sein darf....)

    Spoiler anzeigen
    [autoit]

    #Include <Constants.au3>
    #include <GuiConstants.au3>
    ;=
    $gui = GUICreate("",180,200)
    $1 = GUICtrlCreateButton("KlickR",20,20,50)
    $2 = GUICtrlCreateButton("KlickR2",20,60,50)
    $3 = GUICtrlCreateButton("KlickR3",20,100,50)
    $4 = GUICtrlCreateButton("KlickL",80,20,50)
    $5 = GUICtrlCreateButton("KlickL2",80,60,50)
    $6 = GUICtrlCreateButton("KlickL3",80,100,50)
    $7 = GUICtrlCreateButton("KlickR4",20,140,50)
    $8 = GUICtrlCreateButton("KlickL4",80,140,50)
    GUISetState(@SW_SHOW,$gui)
    ;=
    $klickR = 1 ;<------------------
    $klickL = 1 ;<------------------
    ;=
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    case $msg = $1
    $klickR = "klick"
    Case $msg = $2
    $klickR = "klick2"
    case $msg = $3
    $klickR = "klick3"
    case $msg = $7
    $klickR = "klick4"
    case $msg = $4
    $klickL = "klick"
    case $msg = $5
    $klickL = "klick2"
    case $msg = $6
    $klickL = "klick3"
    case $msg = $8
    $klickL = "klick4"
    EndSelect
    ;=
    If $klickR = "klick" or "klick2" or "klick3" or "klick4" And $klickL = "klick" or "klick2" or "klick3" or "klick4" Then
    ;
    msgbox(0,"","Häh?")
    ;
    EndIf
    Wend

    [/autoit]


    Dann dachte ich mir: "Ok dann kann der eben nicht mit so vielen ors umgehen.Ich such mal eine Alternative."
    Dabei kam dann das hier raus:

    Spoiler anzeigen
    [autoit]

    #Include <Constants.au3>
    #include <GuiConstants.au3>
    ;=
    $gui = GUICreate("",180,200)
    $1 = GUICtrlCreateButton("KlickR",20,20,50)
    $2 = GUICtrlCreateButton("KlickR2",20,60,50)
    $3 = GUICtrlCreateButton("KlickR3",20,100,50)
    $4 = GUICtrlCreateButton("KlickL",80,20,50)
    $5 = GUICtrlCreateButton("KlickL2",80,60,50)
    $6 = GUICtrlCreateButton("KlickL3",80,100,50)
    $7 = GUICtrlCreateButton("KlickR4",20,140,50)
    $8 = GUICtrlCreateButton("KlickL4",80,140,50)
    GUISetState(@SW_SHOW,$gui)
    ;=
    $klickR = 1 ;<------------------
    $klickL = 1 ;<------------------
    ;=
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    case $msg = $1
    $klickR = "klick"
    Case $msg = $2
    $klickR = "klick2"
    case $msg = $3
    $klickR = "klick3"
    case $msg = $7
    $klickR = "klick4"
    case $msg = $4
    $klickL = "klick"
    case $msg = $5
    $klickL = "klick2"
    case $msg = $6
    $klickL = "klick3"
    case $msg = $8
    $klickL = "klick4"
    EndSelect
    ;=
    ;If $klickR = "klick" or "klick2" or "klick3" or "klick4" And $klickL = "klick" or "klick2" or "klick3" or "klick4" Then
    ;
    ; msgbox(0,"","Häh?")
    ;
    ;EndIf
    If $klickR = "klick2" or "klick3" or "klick4" And $klickL = "klick" Then
    $ergebnis = $klickR & $klickL
    MsgBox(0,"",$ergebnis)
    $klickL = 1
    $klickR = 1
    EndIf
    If $klickR = "klick" or "klick3" or "klick4" And $klickL = "klick2" Then
    $ergebnis = $klickR & $klickL
    MsgBox(0,"",$ergebnis)
    $klickL = 1
    $klickR = 1
    EndIf
    If $klickR = "klick" or "klick2" or "klick4" And $klickL = "klick3" Then
    $ergebnis = $klickR & $klickL
    MsgBox(0,"",$ergebnis)
    $klickL = 1
    $klickR = 1
    EndIf
    If $klickR = "klick" or "klick2" or "klick3" And $klickL = "klick4" Then
    $ergebnis = $klickR & $klickL
    MsgBox(0,"",$ergebnis)
    $klickL = 1
    $klickR = 1
    EndIf
    Wend

    [/autoit]


    Meiner Meinung nach, habe ich das Script so programmiert, dass alle Buttons ,die auf der gleichen Ebene stehen, nicht miteinander kombiniert werden können.
    Aber irgendwie geht das doch. Warum versteh ich nicht.
    Meine Schlussfolgerung war, dass man "or" also nur einmal verwenden kann!??
    Wie kann man sowas jetz trotzdem realisieren?( ohne mega viel Schreibarbeit versteht sich:) )
    PS: Ich weiß dass Links und Rechts vertauscht ist. War nur zu faul es zu ändern^^
    Gruß

    Einmal editiert, zuletzt von Dönn3y (2. Mai 2008 um 15:25)

  • Du musst den vergleich jedes Mal machen:

    [autoit]

    ($klickR = "klick") or ($klickR = "klick2") or ($klickR = "klick3") or ...

    [/autoit]


    Und wenn nur einer der Buttons gedrückt sein darf, nimm doch Radioboxen mit Buttonstyle

    Spoiler anzeigen
    [autoit]

    #Include <Constants.au3>
    #include <GuiConstants.au3>
    ;=
    $gui = GUICreate("",180,200)
    GUIStartGroup()
    $1 = GUICtrlCreateRadio("KlickR",20,20,50,-1,$BS_PUSHLIKE)
    $4 = GUICtrlCreateRadio("KlickL",80,20,50,-1,$BS_PUSHLIKE)
    GUIStartGroup()
    $2 = GUICtrlCreateRadio("KlickR2",20,60,50,-1,$BS_PUSHLIKE)
    $5 = GUICtrlCreateRadio("KlickL2",80,60,50,-1,$BS_PUSHLIKE)
    GUIStartGroup()
    $3 = GUICtrlCreateRadio("KlickR3",20,100,50,-1,$BS_PUSHLIKE)
    $6 = GUICtrlCreateRadio("KlickL3",80,100,50,-1,$BS_PUSHLIKE)
    GUIStartGroup()
    $7 = GUICtrlCreateRadio("KlickR4",20,140,50,-1,$BS_PUSHLIKE)
    $8 = GUICtrlCreateRadio("KlickL4",80,140,50,-1,$BS_PUSHLIKE)
    GUIStartGroup()
    GUISetState(@SW_SHOW,$gui)
    Do

    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit]

    Einmal editiert, zuletzt von progandy (2. Mai 2008 um 13:50)