Problem mit If

  • Hi :)
    Seit langem hab ich mich wieder mal an einem Programm versucht^^ Es ist ein Vermessungsprogramm für meine Schule.. Falls es jemandem ein Begriff ist "Freie Stationierung" (ist mit Hand recht viel zum rechnen)
    Auf jeden Fall gibts da ein Problem und ich weiß einfach nicht weiter..
    In meinem Script gibt es eine Stelle und zwar diese:

    [autoit]


    If ($a > $b) Then
    $Ergebnis = $a - $b
    MsgBox(1,"1",$a & "-" & $b & "=" & $Ergebnis)
    ElseIf ($a < $b) Then
    $Ergebnis = $b - $a
    MsgBox(1,"2",$b & "-" & $a & "=" & $Ergebnis)
    Else
    $Ergebnis = 0
    EndIf

    [/autoit]


    so das sieht ja eig ganz normal aus oder??
    Also man hat 2 Winkel und der kleinere soll vom größeren abgezogen werden.
    Nur irgendwie funktioniert das nicht denn da kommt immer was anderes raus.. kommt auf die Zahlen drauf an
    .

    Einige Beispiele:
    a=50, b=150 und in der MsgBox steht "50-150=-100" <-- ???
    a=10, b=110 und in der MsgBox steht "110-10=100" <-- Richtig
    a=80, b=400 und in der MsgBox steht "80-400=-320" <-- ???
    a=800, b=40 und in der MsgBox steht "800-40=760" <-- Richtig
    .
    dabei ist egal ob ich a und b vertausche.
    aber seit wann ist 50 größer als 150 oder 80 größer wie 400?
    So wie ich das sehe verwendet der zum überprüfen (welche Zahl größer ist) immer nur die erste Ziffer, wenn diese gleich ist die zweite.. ??? ?(
    .
    Danke schonmal für die Antworten :D
    Ijens

    Einmal editiert, zuletzt von Ijens (19. Mai 2010 um 22:08)

  • bei mir kommt da nicht - raus bei deinem ersten ;)

    [autoit]


    $a = 50
    $b = 150
    If ($a > $b) Then
    $Ergebnis = $a - $b
    MsgBox(1,"1",$a & "-" & $b & "=" & $Ergebnis)
    $Ergebnis = 0
    ElseIf ($a < $b) Then
    $Ergebnis = $b - $a
    MsgBox(1,"2",$b & "-" & $a & "=" & $Ergebnis)
    $Ergebnis = 0
    Else
    $Ergebnis = 0
    EndIf

    [/autoit]

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • das sind strings und keine integer!!
    du must Int($StringZuZahl) verwenden:

    [autoit]

    $a = Int(InputBox("a", "a"))
    $b = Int(InputBox("b", "b"))
    If ($a > $b) Then
    $Ergebnis = $a - $b
    MsgBox(1, "1", $a & "-" & $b & "=" & $Ergebnis)
    ElseIf Not ($a > $b) Then
    $Ergebnis = $b - $a
    MsgBox(1, "2", $b & "-" & $a & "=" & $Ergebnis)
    Else
    $Ergebnis = 0
    EndIf

    [/autoit]

    :pinch: :wacko:

    Edit1: korrektur: int am anfang geht auch ^^

  • Danke für die schnellen antworten :P
    Jez isses mir klar :pinch: Hab das aus einem input ausgelesen und GuiCtrlRead macht einen string..
    den muss ich dann erst umwandeln :D
    Danke skorpi :thumbup: