Input Zahlen auslesen

  • Hy

    ich habe ein kleines Anfängerproblem :)

    Folgende Situation:

    Ich habe 3 inputfelder. und möchte diese miteinander vergleichen.
    Jetzt habe ich folgendes Problem, das wenn ich abfrage ob der Zahlenwert in dem Inputfeld z.B. 90 >100 dann gibt er mir ein OK.
    Wie ich durch probieren festgestellt habe ließt er die Zahlen von vorne. Ich müsste also anstatt 90 --> 090 eingeben damit der vergleich richtig ist.

    Wie kann ich denn das Lösen

    Spoiler anzeigen

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1_1 = GUICreate("Reifen Setup", 617, 435, 236, 246)
    GUISetBkColor(0xFFFFFF)

    $fl_o_input = GUICtrlCreateInput("", 102, 88, 41, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
    $fl_c_input = GUICtrlCreateInput("", 150, 88, 41, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
    $fl_i_input = GUICtrlCreateInput("", 198, 88, 41, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $fr_o_input = GUICtrlCreateInput("", 470, 88, 41, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
    $fr_i_input = GUICtrlCreateInput("", 374, 88, 41, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
    $fr_c_input = GUICtrlCreateInput("", 422, 88, 41, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $rl_i_input = GUICtrlCreateInput("", 198, 240, 41, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
    $rl_o_input = GUICtrlCreateInput("", 102, 240, 41, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
    $rl_c_input = GUICtrlCreateInput("", 150, 240, 41, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $rr_c_input = GUICtrlCreateInput("", 422, 240, 41, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
    $rr_i_input = GUICtrlCreateInput("", 374, 240, 41, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
    $rr_o_input = GUICtrlCreateInput("", 470, 240, 41, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $fl_sturz = GUICtrlCreateLabel("fl_sturz", 104, 112, 132, 17)
    $fl_tyre = GUICtrlCreateLabel("fl_tyre", 104, 144, 132, 17)
    $fl_bar = GUICtrlCreateLabel("fl_bar", 104, 128, 132, 17)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $rl_sturz = GUICtrlCreateLabel("rl_sturz", 104, 264, 132, 17)
    $rl_bar = GUICtrlCreateLabel("rl_bar", 104, 280, 132, 17)
    $rl_tyre = GUICtrlCreateLabel("rl_tyre", 104, 296, 132, 17)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $fr_sturz = GUICtrlCreateLabel("fr_sturz", 376, 112, 132, 17)
    $fr_bar = GUICtrlCreateLabel("fr_bar", 376, 128, 132, 17)
    $fr_tyre = GUICtrlCreateLabel("fr_tyre", 376, 144, 132, 17)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $rr_sturz = GUICtrlCreateLabel("rr_sturz", 376, 264, 132, 17)
    $rr_bar = GUICtrlCreateLabel("rr_bar", 376, 280, 132, 17)
    $rr_tyre = GUICtrlCreateLabel("rr_tyre", 376, 296, 132, 17)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $run = GUICtrlCreateButton("Ausführen", 264, 348, 97, 25)
    $Combo1 = GUICtrlCreateCombo("Rennen", 256, 8, 105, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    $Pic1 = GUICtrlCreatePic("C:\Users\Danny\Desktop\sss.jpg", 249, 48, 116, 236)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; TEXTE
    $r_down = "Radstuz Senken"
    $r_up = "Radstuz Ehöhen"
    $r_ok = "Radstuz OK"
    $bar_up = "mehr Reifendruck"
    $bar_down = "weniger Reifendruck"
    $bar_ok = "Reifendruck OK"
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###


    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    Case $run
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Vorne Links;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Radstuz;;;;;;;;;;;;
    $fl_o = GUICtrlRead($fl_o_input)
    $fl_c = GUICtrlRead($fl_c_input)
    $fl_i = GUICtrlRead($fl_i_input)
    If $fl_o = "" or $fl_c ="" or $fl_i = "" Then
    GUICtrlSetData ($fl_sturz, "")
    GUICtrlSetData ($fl_tyre, "")
    ElseIf $fl_i - 3 < $fl_o Then
    GUICtrlSetData ($fl_sturz, $r_down)
    ElseIf $fl_i - 5 > $fl_o Then
    GUICtrlSetData ($fl_sturz, $r_up)
    Else
    GUICtrlSetData ($fl_sturz, $r_ok)
    EndIf
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Reifendruck;;;;;;;;;;;;
    Select

    Case $fl_c > $fl_o and $fl_c < $fl_i
    GUICtrlSetData ($fl_bar, $bar_ok)
    Case $fl_c > $fl_i
    GUICtrlSetData ($fl_bar, $bar_down)
    Case $fl_c < $fl_o
    GUICtrlSetData ($fl_bar, $bar_up)

    EndSelect
    EndSwitch
    WEnd

    Einmal editiert, zuletzt von darthkali (11. August 2013 um 13:03)

  • GuiCtrlRead gibt einen String zurück (siehe Hilfe)

    Damit du aber richtige Vergleiche (und/oder Rechnungen) durchführen kannst, musst du sie in "richtige" Zahlen umwandeln.
    Dies funktioniert mit der "Number()" - Funktion. ;)

    [autoit]

    $fl_o = Number(GUICtrlRead($fl_o_input))
    $fl_c = Number(GUICtrlRead($fl_c_input))
    $fl_i = Number(GUICtrlRead($fl_i_input))

    [/autoit]


    Damit sollten auch die Vergleiche korrekt funktionieren.

    MfG

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Super :)
    Manchmal kommt man nicht auf die einfachsten sachen. Naja ich lerne ja noch

    Grüße Danny :thumbup:

    • Offizieller Beitrag

    Es ist dann aber sinnvoll, die Inputs mit dem Style $ES_NUMBER zu erstellen, damit ausschliesslich Ziffern eingegeben werden können.
    Das Umwandeln mit Number gibt dir nämlich im Fehlerfall (keine Ziffer/n, sondern Textzeichen im Input) den Zahlenwert "0" zurück, was ja durchaus eine korrekte Eingabe (da Ziffer) sein könnte, in diesem Fall aber aussortiert werden muss.

  • Dafür habe ich schon ein nützliches Skript gefunden. Damit kann ich nun Zahlen und Komma eingeben.

    Grüße Danny

  • Da du dein Problem nun gelöst hast, setzt bitte den Thread-Präfix auf "gelöst". :)
    (--> 1. Beitrag bearbeiten)

    MfG

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Hi,
    die vielen Controls lassen sich auch zusammenfassen. Das Ansprechen erfolgt, dann über die Array-Variable "$aIpt[0] - $aIpt[11]".
    Weiterhin viel Spaß hier! ;)

    Spoiler anzeigen
    [autoit]


    #AutoIt3Wrapper_AU3Check_Parameters=-w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #region ### START Koda GUI section ### Form=
    $Form1_1 = GUICreate("Reifen Setup", 700, 430, 236, 246)
    GUISetBkColor(0xFFFFFF)
    $Combo1 = GUICtrlCreateCombo("Rennen", 295, 8, 105, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))

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

    GUICtrlCreateGroup(" Eintrag 1 ", 20, 50, 330, 325)
    GUICtrlSetBkColor(-1, 0xFFCCFF) ; Rosa
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup(" Eintrag 2 ", 350, 50, 330, 325)
    GUICtrlSetBkColor(-1, 0xCCFFFF) ; Mintgrün

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

    Global $aIpt[12]
    For $k = 0 To 11
    $aIpt[$k] = GUICtrlCreateInput("", 70 + Mod($k, 6) * 100, 90 + Int($k / 6) * 150, 60, 20, $ES_NUMBER)
    Next
    GUICtrlCreateGroup("", -99, -99, 1, 1)

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

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $fl_sturz = GUICtrlCreateLabel("fl_sturz", 75, 112, 132, 17)
    $fl_tyre = GUICtrlCreateLabel("fl_tyre", 75, 144, 132, 17)
    $fl_bar = GUICtrlCreateLabel("fl_bar", 75, 128, 132, 17)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $rl_sturz = GUICtrlCreateLabel("rl_sturz", 75, 264, 132, 17)
    $rl_bar = GUICtrlCreateLabel("rl_bar", 75, 280, 132, 17)
    $rl_tyre = GUICtrlCreateLabel("rl_tyre", 75, 296, 132, 17)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $fr_sturz = GUICtrlCreateLabel("fr_sturz", 376, 112, 132, 17)
    $fr_bar = GUICtrlCreateLabel("fr_bar", 376, 128, 132, 17)
    $fr_tyre = GUICtrlCreateLabel("fr_tyre", 376, 144, 132, 17)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $rr_sturz = GUICtrlCreateLabel("rr_sturz", 376, 264, 132, 17)
    $rr_bar = GUICtrlCreateLabel("rr_bar", 376, 280, 132, 17)
    $rr_tyre = GUICtrlCreateLabel("rr_tyre", 376, 296, 132, 17)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $run = GUICtrlCreateButton("Ausführen", 295, 390, 97, 25)
    ;~ $Pic1 = GUICtrlCreatePic("C:\Users\Danny\Desktop\sss.jpg", 249, 48, 116, 236)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; TEXTE
    $r_down = "Radstuz Senken"
    $r_up = "Radstuz Ehöhen"
    $r_ok = "Radstuz OK"
    $bar_up = "mehr Reifendruck"
    $bar_down = "weniger Reifendruck"
    $bar_ok = "Reifendruck OK"
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While True
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3 ;$GUI_EVENT_CLOSE
    Exit
    Case $run
    MsgBox(64, "", "Ausführen gedrückt !" & @TAB)
    EndSwitch
    WEnd
    ; Ende

    [/autoit]