gleicher Ausdruck - oder nicht? ("nicht ungleich" <> "gleich" ?)

  • Habe ein interessantes Problem.

    Ich habe eine Zeile eines Programms innerhalb von Select geändert, nämlich:

    Alt:
    Case $Varr = 23

    Neu:
    Case Not $Var <> 23

    irgendwie scheint der Ausdruck aber nicht das gleiche zu bewirken, obwohl "nicht ungleich" und "gleich" eigentlich identische ausdrücke sind, oder?!

  • Case $Var Not <> 23

    wenn, dann so... wobei ich mir ned vorstellen kann dass das so hinhauen wird ^^

    wozu gibts denn = bzw <> ?

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]
  • das hatte ich zunächst so, wurde aber beim syntaxcheck als falsch bemängelt

    laut hilfe müsste not aber funktionieren:

    The expression can contain the boolean operators of AND, OR, and NOT as well as the logical operators <, <=, >, >=, =, ==,

    Einmal editiert, zuletzt von winikator24654 (28. August 2007 um 23:14)

  • Hi!

    Ähh, das klappt doch alles wunderbar. Folgende drei Anweisungen machen exakt das Gleiche, wobei Case 1 wohl die schnellste Überprüfung ist:

    Spoiler anzeigen
    [autoit]

    Local Const $I_VAR = 23

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

    Select
    Case $I_VAR = 23
    MsgBox(64, "Test", "Case 1")
    ContinueCase
    Case $I_VAR == 23
    MsgBox(64, "Test", "Case 2")
    ContinueCase
    Case Not $I_VAR <> 23
    MsgBox(64, "Test", "Case 3")
    ContinueCase
    EndSelect

    [/autoit]

    Dein Fehler muss irgendwo anders liegen!

  • Eben. Aufgrund dieser Wertigkeit wird hier immer true herauskommen (wenn n <> 0):

    [autoit]

    $var =23
    msgbox(0,"",not $var <> 23 )
    msgbox(0,"",not $var <> 25 )
    msgbox(0,"",not $var <> 30 )

    [/autoit]

    Da zuerst die Variable negiert wird, gibt es im Endeffekt immer einen Vergleich auf: false <> n
    Die Variable selbst ist, sobald diese <> 0 ist, immer true.

    Wenn schon der Vergleich negiert werden soll, muß dieser in eine Klammer:

    [autoit]

    $var =23
    msgbox(0,"",not ($var <> 23) )
    msgbox(0,"",not ($var <> 25) )
    msgbox(0,"",not ($var <> 30) )

    [/autoit]

    Ist aber schon etwas grausig zu lesen ;)

    Grüße
    Stilgar

    3 Mal editiert, zuletzt von Stilgar (29. August 2007 um 09:49)