InputBox und IsString/ IsNumber

  • Hiho,

    ich habe eine InputBox und der nur Zahlen (0-255) eingetragen werden sollen.
    komischerweise gibt IsString bei Text und Zahlen immer 1 aus, IsNumber immer 0 ... wtf ?

    [autoit]

    Do
    $InputBox = InputBox("Transparence", "Set Transparence for iDo (255 = Solid, 0 = Invisible)", $trans, Default, Default, Default, Default, Default, Default, $gui)
    If @error = 1 Then ExitLoop
    MsgBox(0, $IsString($inputbox), IsNumber($InputBox))
    Until $InputBox >= 0 And $InputBox <= 255

    [/autoit]
  • [autoit]

    Do
    $InputBox = Int(InputBox("Transparence", "Set Transparence for iDo (255 = Solid, 0 = Invisible)", $trans, Default, Default, Default, Default, Default, Default, $gui))
    If @error = 1 Then ExitLoop
    MsgBox(0, $IsString($inputbox), IsNumber($InputBox))
    Until $InputBox >= 0 And $InputBox <= 255

    [/autoit]


    Müsste gehen.
    900. Post :rock:

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Ne das geht nicht, da ja jetzt jeder Rückgabewert zu nem Integer wird! Mir fällt im moment nix anderes ein, als den String mit StringInStr zu durchforsten..

  • Wenn ich den Code ausführe kommen fehlermeldungen.. warscheinlich fehlen mir die nötigen includes,
    aber davon mal abgesehen kannste doch die funktion:

    [autoit]

    execute($inputbox) ; um den string "auszurechnen" oder einfach:
    int($inputbox) ; damit aus dem string ein int wird

    [/autoit]


    nehmen (sofern nur ganzzahlen benutzt werden)
    bei mir funktionierts zumindest :P

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • Ups hab StringRegExp ganz vergessen :D

    Hier:

    Spoiler anzeigen
    [autoit]

    While 1
    $InputBox = InputBox("Transparence", "Set Transparence for iDo (255 = Solid, 0 = Invisible)",""," M3")
    If Not @Error And Int($InputBox) >= 0 And Int($InputBox) <= 255 AND StringRegExp($InputBox, "\D")=0 Then ExitLoop
    Wend

    [/autoit]

    EDIT: so.. hab noch dazugeschrieben, dass man höchstens 3 Ziffern eingeben darf, keine Kombinationen aus Ziffern und Buchstaben erlaubt sind und die Schleife weiter geht auch wenn Cancel gedrückt wurde ^^

    3 Mal editiert, zuletzt von ChaosKeks (17. Mai 2009 um 14:37)

  • Eine Zeile kürzer und ohne RegExp:

    Dann geb mal irgendeine Kombination aus Zahlen und Buchstaben ein...
    Und kürzen kann man meins auch, wenn die schleife nicht weiter gehen soll falls Cancel gedrückt wurde:

    Spoiler anzeigen
    [autoit]

    Do
    $InputBox = InputBox("Transparence", "Set Transparence for iDo (255 = Solid, 0 = Invisible)",""," M3")
    Until Int($InputBox) >= 0 And Int($InputBox) <= 255 AND StringRegExp($InputBox, "\D")=0

    [/autoit]
  • Es gibt auch noch StringIsInt statt StringRegExp ;)

    [autoit]

    Do
    $InputBox = InputBox("Transparence", "Set Transparence for iDo (255 = Solid, 0 = Invisible)",""," M3")
    Until StringIsInt($InputBox) And Int($InputBox) >= 0 And Int($InputBox) <= 255

    [/autoit]
  • hey, besten dank euch.

    eigentlich dachte ich, ich mache was falsch ... weil die ausgabe von der inputbox ja genau das ist, was eingegeben wird ... und warum isstring und isnumber darauf nicht klarkommen ... *schulterzuck*

    aber die letzte methode funzt einwandfrei. hab noch um @error erweiter (cancel) ... ansonsten genügt es meinen ansprüchen.
    habs nur auf wunsch hier im forum erweitert, sonst hätte man es über die ini machen können *g*

  • Eine InputBox gibt immer einen String aus ;) auch eine Zahl kann als String dargestellt werden. Und hier ein Beispiel für einen Slider:

    Spoiler anzeigen
    [autoit]

    Func _Transparenzdialog($Standardwert=255, $ErlaubeUnsichtbar=False)
    Local $Mode = Opt("GUIOnEventMode",0)
    Local $TransGUI = GUICreate("Transparenz einstellen", 275,110,-1,-1,0xC80000)
    GUICtrlCreateLabel("Bitte die Transparenz einstllen",10,10,255,20)
    Local $slider = GUICtrlCreateSlider(10,30,255,30)
    GUICtrlCreateLabel("0 (Unsichtbar) (Undurchsichtig) 255", 20, 60,255,20)
    Local $OK = GUICtrlCreateButton("OK", 10, 80,80,20,0x0001)
    Local $Abbrechen = GUICtrlCreateButton("Abbrechen", 100, 80,80,20)
    Local $Wert = GUICtrlCreateLabel("Wert: "&Int($Standardwert), 200, 85,80,20)
    GUICtrlSetLimit($slider,255,$ErlaubeUnsichtbar=False)
    GUICtrlSetData($slider,$Standardwert)
    GUISetState()
    Local $aMsg
    While 1
    $aMsg = GUIGetMsg(1)
    Switch $aMsg[1]
    Case $TransGUI
    Switch $aMsg[0]
    Case $OK
    $Return = GUICtrlRead($slider)
    ExitLoop
    Case -3, $Abbrechen
    $Return = -1
    ExitLoop
    Case -11 ; MouseMove
    GUICtrlSetData($Wert,"Wert: " & GUICtrlRead($slider))
    EndSwitch
    EndSwitch
    WEnd
    GUIDelete($TransGUI)
    Opt("GUIOnEventMode",$Mode)
    Return $Return
    EndFunc
    $neu = _Transparenzdialog(200,False)
    MsgBox(0,"","Neue Transparenz: " & $neu & @CRLF & "(-1 = abgebrochen)")

    [/autoit]