If - then

  • Hey Community,

    ich würde gerne wissen, wie es geht folgendes zu scripten.
    Wenn ich in meine Inputbox etwas eingebe, in dem Fall "Alex" dann soll eine Nachricht
    erscheinen, der script dafür wäre der hier:

    [autoit]

    If $input1 = "Alex" then msgbox (0,"TEST","TEST2")

    [/autoit]

    Doch wie geht das, dass er eine Nachricht erhalten soll, falls das rein geschriebene
    nicht "Alex" ist.

    3 Mal editiert, zuletzt von cOraXx (18. November 2010 um 17:15)

    • Offizieller Beitrag

    Dazu verwendest du einfach den Else-Zweig (wenn in beiden Fällen wahr/unwahr reagiert werden soll) oder negierst die Abfrage:

    [autoit]


    If $input1 = "Alex" then
    msgbox (0,"TEST","Alex wahr")
    else
    msgbox (0,"TEST","Alex unwahr")
    endif

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

    ; oder nur unwahr abfragen
    If $input1 <> "Alex" then msgbox (0,"TEST","Alex unwahr")

    [/autoit]
  • Hi
    Ok BugFix aber ich habs mal erweitert ähnlich einem Fall von mir in einer Passwort Abfrage aber das Ergebnis bleibt 'wahr'
    Obwohl die Logik da sein dürfte :whistling:

    [autoit]

    $input2 = InputBox("Test" , "Alex oder nicht Alex" , "")

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

    $input1 = "Aex"

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

    If $input1 or $input2 = "Alex" then
    msgbox (0,"TEST","Alex wahr")
    else
    msgbox (0,"TEST","Alex unwahr")
    endif

    [/autoit]
  • Zitat

    Obwohl die Logik da sein dürfte

    Wenn ich es richtig verstanden habe, was du willst, dann nicht :P

    $input2 = Irgendwas
    $input1 = Alex

    Wenn Alex oder Irgendetwas, Alex ist, dann
    Wahr
    Sonst
    unwahr

    Warum sollte es denn nun unwahr sein?

    lg

  • @ Fr34k
    Scheinbar hast du es nicht verstanden
    Denn wenn du mein Beispiel testest wirst du sehen das wenn $Input1 = false und Input2 = false trotzdem wahr ergibt.
    Dabei sollte doch wenn nur ein Input = True das Ergebnis auch True sein
    or = oder

  • Genau. Erklärung:
    Mit If $input or $input2 = "alex" fragst du ab, ob $input wahr ist (string wird in nahezu jedem Fall immer wahr sein) ODER $input2 den Wert "alex" hat.
    Kürzer als Sprengers Lösung geht's also kaum...

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Beispiel wie ich das haben will.

    Es öffnet sich eine Inputbox, die Inputbox besagt mir, ich soll mein Passwort eingeben.
    Gebe ich "Alex" in die Box ein, so werde ich mit:

    [autoit]

    If $input1 = "Alex" then msgbox (0,"Willkommen","Willkommen Alex. Schön Sie zu sehen.")

    [/autoit]

    weitergeleitet.


    Doch ich möchte wissen, wie der Befehl dafür lautet, falls das eingegebene NICHT "Alex" ist, dass dort eine andere Nachricht kommt.
    z.b.: "Error","Tut mir leid, Du konntest Dich nicht als Alex identifizieren!"

    @ Dial:

    Bei deinem Script ist egal was ich eingebe, ich werde immer als Alex erkannt. Ich möchte wissen, die der Befehl lautet,
    das wenn ich in die Inputbox etwas anderes als "Alex" eingebe, das er mir eine Nachricht schickt.

    Auf Deutsch:

    Wenn $inhalt1 = "Alex" dann msgbox (0,"Willkommen","Willkommen Alex!")

    Wenn $inhalt1 = nicht "Alex" dann msgbox (0,"Es tut mir leid","Tut mir leid, Du bist nicht Alex!")

    2 Mal editiert, zuletzt von cOraXx (18. November 2010 um 16:20)

  • Wie oben schon geschrieben wurde einfach if then else also so:

    [autoit]


    If $input1 = "Alex" then
    msgbox (0,"Willkommen","Willkommen Alex. Schön Sie zu sehen.")
    else
    msgbox (0,"Fehler","Ungültiger Username!")
    endif

    [/autoit]

    Aber ich vermute mal, dass der Vergleich auch eine Fehlerquelle sein könnte. Mach das besser mit

    [autoit]


    if stringcompare($input1,"Alex") = 0 then
    ...
    else
    ...
    endif

    [/autoit]
  • Wenn du ohne Else willst und nur auf Negation vergleichen willst, nimm das.

    [autoit]

    If $inhalt1<> "Alex" Then MsgBox(0, "Fehler", "Ungültiger Username!")

    [/autoit]


    Aber das hat BugFix auch schon gepostet.

    EDIT: Du solltest GUICtrlRead($input1) schon im Case benutzen, am Anfang macht es kein Sinn.

  • Der Fehler in deinem Script ist folgender:

    Du bestimmst die Varibale $inhalt1 ganz am anfang, da am anfang nicht das im Feld steht was der user eingibt kann nur ein ungültiges Ergebnis rauskommen.
    Du musst

    [autoit]

    $inhalt1 = GUICtrlRead ($input1)

    [/autoit]

    aufrufen sobald der Button gedrückt wird, damit die Varibale den aktuellen Inhalt bekommt.

  • So in etwa, müsste laufen, habs nicht getestet.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $hGui = GUICreate("Gui", 600, 130)
    $hInput = GUICtrlCreateInput("", 30, 20, 480, 20)
    $hButton = GUICtrlCreateButton("Button1", 30, 70, 480, 50)
    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hButton
    If GUICtrlRead($hInput) = "Alex" Then
    MsgBox(0, "Willkommen", "Hallo Alex!")
    Else
    MsgBox(0, "Falscher Benutzer", "Es tut mir leid, Du bist nicht Alex!")
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • Also:

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

    $inhalt1 = GUIctrlread ($input1)
    If $inhalt1 = "Alex" then
    msgbox (0,"Willkommen Alex!","Hallo Alex")
    else
    msgbox (0,"Error","Du bist nicht Alex!")
    endif

    [/autoit]

    Die GUIctrlread muss also vor If liegen?

  • Woa geil. Vielen Dank für die Hilfe und eure Geduld, ihr habt mir wirklich geholfen, großer Lob!!!

  • Hi
    eins bitte noch zum Thema, bin auf :

    [autoit]

    If $input1 Not "Alex" Then msgbox (0,"Willkommen","Negativ")

    [/autoit]

    gestossen. Von der Logik her sollte es ja funktionieren. Tuts aber nicht.
    Und in der Hilfe gibt es "Not" nicht.