Unterschiedliche Ausgaben bei <> trotz gleicher Werte

  • Sehr komisch:

    [autoit]

    ConsoleWrite($b & $a)
    If $a = $b Then
    MsgBox(0, "", "gleich")
    ElseIf $b < $a Then
    MsgBox(0, "", "$a")
    ElseIf $b > $a Then
    MsgBox(0, "", "$b größer")
    EndIf
    $b = $b
    $a = $a

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

    ConsoleWrite($b & $a)
    If $a = $b Then
    MsgBox(0, "", "gleich")
    ElseIf $b < $a Then
    MsgBox(0, "", "$a")
    ElseIf $b > $a Then
    MsgBox(0, "", "$b größer")
    EndIf
    $b = 212
    $a = 42

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

    ConsoleWrite($b & $a)
    If $a = $b Then
    MsgBox(0, "", "gleich")
    ElseIf $b < $a Then
    MsgBox(0, "", "$a")
    ElseIf $b > $a Then
    MsgBox(0, "", "$b größer")
    EndIf

    [/autoit]

    Zuerst werden die Werte ausgelesen. Sie sind die gleichen wie dann, wenn sie zugewiesen werden, dennoch kommt ein anderes Ergebnis raus.

    Bei den ersten beiden Mal kommt: $a raus, bei letzten Mal $b.

    Hier der Beweis, das die Werte gleich sind:
    212422124221242+>19:08:02 AutoIT3.exe ended.rc:0
    (ConsoleWrite)

    Spoiler anzeigen

    212
    42
    212
    42
    212
    42

    • Offizieller Beitrag

    Das Script, welches du gepostet hast kann nicht laufen da $a und $b nicht deklariert sind. Bitte das komplette Script posten.
    Da die Variablen nicht deklariert sind ist $a=0 und $b=0.

    Ausserdem verstehe ich dein Problem nicht, oder zumindest deine Fragestellung.

  • Habe einfach irgendwelche Werte genommen:

    Spoiler anzeigen
    [autoit]

    $b = 2
    $a = 42

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

    ConsoleWrite($b &" "& $a & @CRLF)
    If $a = $b Then
    MsgBox(0, "", "gleich")
    ElseIf $b < $a Then
    MsgBox(0, "", "$a")
    ElseIf $b > $a Then
    MsgBox(0, "", "$b größer")
    EndIf
    $b = $b
    $a = $a

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

    ConsoleWrite($b &" "& $a & @CRLF)
    If $a = $b Then
    MsgBox(0, "", "gleich")
    ElseIf $b < $a Then
    MsgBox(0, "", "$a")
    ElseIf $b > $a Then
    MsgBox(0, "", "$b größer")
    EndIf
    $b = 212
    $a = 42

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

    ConsoleWrite($b &" "& $a & @CRLF)
    If $a = $b Then
    MsgBox(0, "", "gleich")
    ElseIf $b < $a Then
    MsgBox(0, "", "$a")
    ElseIf $b > $a Then
    MsgBox(0, "", "$b größer")
    EndIf

    [/autoit]

    klappt doch 1a ?(

  • Um Zahlwerte zu vergleichen, musst du die Variablen auch in Zahlen umwandeln. Sonst wird ein Stringvergleich gemacht.

    [autoit]

    $a = "42"
    $b = "123"

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

    MsgBox(0, '', $b > $a)

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

    $a = Number($a)
    $b = Number($b)
    MsgBox(0, '', $b > $a)

    [/autoit]
  • Mein Skript funktioniert jetzt mit Number().
    Danke, das Ganze hat mich sehr verwirrt. Schließlich kann es eigentlich nicht sein, dass a<b und a>b. ;)