AutoIt Compiler erkennt keine Operatoren?!

  • Bei mir nicht :

    AutoIt
    Local $LocalPosX = 65, $PosMaxX = 533
    ConsoleWrite(($LocalPosX >= $PosMaxX) & @CRLF)
    
    If $LocalPosX >= $PosMaxX Then
        ConsoleWrite("LocalPosX:" & $LocalPosX & "  GROESSER/GLEICH  PosMaxX:" & $PosMaxX & @CRLF)
    Else
        ConsoleWrite("LocalPosX:" & $LocalPosX & "  KLEINER  PosMaxX:" & $PosMaxX & @CRLF)
    EndIf

    Poste nächstes Mal bitte ein lauffähiges Miniskript und verwende das Icon </> (Code einfügen)

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (26. September 2022 um 00:55)

  • Alles was Musashi sagte und:
    Ob der Vergleich so richtig ist können wir anhand des Schnipsel gar nicht sagen, da wir nichts über den Datentyp der beiden Variablen wissen.
    Wenn $LocalPosX und $PosMaxX numerische Datentypen wie Integer oder Float sind, dann würde False herauskommen, da 65 nun einmal kleiner ist als 533.
    Wenn diese jedoch vom Datentyp String sind, dann ist True als Ergebnis korrekt, da Zeichenketten zeichenweise verglichen werden und "6" einen höheren Character-Code hat als "5".

  • Ggf. diese einfach per Number($String) umwandeln, wenn du es für die Überprüfung brauchst.

    Wtf, danke, habs überprüft und beide sind Type:String. Wusste nicht, dass AutoIt so Funktioniert, danke euch

    Hört sich eher an als wäre das grundsätzlich fehlendes Programmierverständnis. Normalerweise musst du ggf. vorher definieren welcher Typ eine Variable ist, bevor du sie nutzen kannst. Das fällt hier ja schon mal komplett weg.

  • yo passt

    Zur Info :

    In vielen Sprachen muss bei der Deklaration einer Variable zwingend ein Datentyp angegeben werden, z.B. var PositionX : Integer; .

    In AutoIt ist dies nicht erforderlich (Variable sind intern vom Typ Variant).

    Daher wird allgemein (wenn auch nicht von allen) empfohlen, den Datentyp in den Namen der Variable zu integrieren, siehe z.B. Best_coding_practices

    Dies ist aber nur eine 'optische' Orientierungshilfe - AutoIt führt keine gesonderte Prüfung durch.

    Local $iPositionX = "200" würde also keinen Fehler erzeugen.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."