Inputbox - darf nicht leer sein

  • hiho,

    also ich habe folgendes scriptchen (ausschnitt)

    Spoiler anzeigen
    [autoit]


    ;Eingabe User & PW
    If FileExists(@ScriptDir & $Settings) Then
    $sUsername = IniRead(@scriptdir & $Settings, "General", "Username", "")
    $SaveDirIE = IniRead(@scriptdir & $Settings, "Path", "SaveDirIE", "")
    $SaveDirExcel = IniRead(@scriptdir & $Settings, "Path", "SaveDirExcel", "")
    Else
    $sUsername = InputBox("MARS-UserID", "Bitte geben Sie Ihre UserID ein (nur beim 1. Start)", "", "", 275, 100)
    if @error = 1 Then
    exit
    EndIf
    IniWrite(@scriptdir & $Settings, "General", "User", $sUsername)
    $SaveDirExcel = FileSelectFolder("Bitte wählen Sie einen Ordner aus, in dem Ihre Reports gespeichert werden sollen (nur beim 1. Start)", "", 1, "C:\Temp")
    if @error = 1 Then
    FileDelete(@scriptdir & $Settings)
    exit
    EndIf
    IniWrite(@scriptdir & $Settings, "Path", "SaveDirExcel", $SaveDirExcel)
    DirCreate($SaveDirExcel & "\IE-Exports")
    $SaveDirIE = $SaveDirExcel & "\IE-Exports"
    IniWrite(@scriptdir & $Settings, "Path", "SaveDirIE", $SaveDirIE)
    EndIf
    $sPassword = InputBox("MARS-Passwort", "Bitte geben Sie Ihr Passwort ein", "", "*", 10, 10)
    if @error = 1 Then
    exit
    EndIf

    [/autoit]

    also hab es jetzt soweit, dass alle angaben, außer das pw, in einer ini gespeichert werden, und bei folgeläufen hieraus ausgelesen werden.

    aber sowohl bei der user- als auch pw-inputbox sollte der wert nicht "" (leer) sein können. das script läuft weiter, sobald auf ok geklickt wird. ist aber nun nichts bei user/pw eingetragen, läuft das script beim login an der entsprechenden ie-seite auf.
    soweit ich das gesehen habe, gibt es bei der inputbox keine option dafür.

    aber den string auslesen (wenn leer dann neue inputbox) würde ich lieber eine msgbox vorziehen, die beim klick auf ok sagt (box darf nicht leer sein, bitte versuchen sie es erneut).

  • setzt doch vorher einfach eine If abfrage:

    [autoit]

    If GUIctrlRead($input) <> '' then
    ;TuWad
    EndIf

    [/autoit]
  • bitte lacht mich nicht aus, also soweit klappt es jetzt, aber jetzt bräuchte ich natürlich noch ne schleife drumrum, damit er auch zur inputbox zurückspringt *g*

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    do
    $sUsername = InputBox("MARS-UserID", "Bitte geben Sie Ihre UserID ein (nur beim 1. Start)", "", "", 275, 100)
    if @error = 1 Then
    exit
    Elseif GUICtrlRead($sUsername) = "" Then
    MsgBox(0, "Warnung", "Inputbox darf nicht leer sein, bitte geben Sie Ihre UserID ein")
    EndIf
    until $sUsername <> ""

    [/autoit]

    PS: habs doch geschafft, war auf dem richtigen weg, leider hatte ich den exit befehl an der falschen stelle, so dass es nicht klappen konnte =)

    daaaaaanke

    PPS: hmm, klappt leider nicht ganz, es kommt bei richtiger eingabe nochmal die msgbox =/
    auch wenn ich es mit while zusammenbaue

  • Meger du hast ihm das selber mit guictrlread gesagt :D ^^

    [autoit]

    #include <GUIConstants.au3>
    $sUsername = ""
    do
    $sUsername = InputBox("MARS-UserID", "Bitte geben Sie Ihre UserID ein (nur beim 1. Start)", "", "", 275, 100)
    if @error = 1 Then
    exit
    Elseif $sUsername = "" Then
    MsgBox(0, "Warnung", "Inputbox darf nicht leer sein, bitte geben Sie Ihre UserID ein")
    EndIf
    until $sUsername <> ""

    [/autoit]

    Probier das mal ;)

    • Offizieller Beitrag

    Hi,

    weil ich immer davon ausgegangen bin, dass er ne GUI hat und GuiCtrlInputBox nutzt!

    Naja ich würde es ungefähr so machen:

    [autoit]

    #include <GUIConstants.au3>

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

    _checkUserName()

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

    Func _checkUserName()
    $sUsername = InputBox("MARS-UserID", "Bitte geben Sie Ihre UserID ein (nur beim 1. Start)", "", "", 275, 100)
    If @error > 0 Then Return ; oder exit
    If $sUsername == '' Then
    MsgBox(0, "Warnung", "Inputbox darf nicht leer sein, bitte geben Sie Ihre UserID ein")
    _checkUserName()
    EndIf
    EndFunc ;==>_checkUserName

    [/autoit]

    So long,

    Mega

  • also es funktionieren beide, mit der msgbox siehts natürlich noch nen tick besser aus, damit die dummen user auch wissen, was ich von ihnen will *g*

    hab daniels bsp genommen, weil das auch so meine gewesen ist, nur das die nicht ganz so schön geklappt hat *g*
    und er namensvetter ist =)

    aber der dank gebührt natürlich beiden \o/

  • Hi,
    ..auch mit der InputBox kann die Eingabe maskiert werden(habe ich in der Hilfe gelesen :D)
    ..und auch ausprobiert(Schleife ist kein Problem, oder ?)

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon ;Ohne Icon im Tray, hängende Prozesse im ProcessViewer beenden
    Opt("MustDeclareVars", 1) ;0=ohne, 1=erfordert Variablen-Deklaration
    Const $Admin="Administrator", $Nichtzulangeanzeigen=1, $NichtVorbesetzt="", $PwMaske="y"
    Dim $pw="", $Prompt="Eingabe wird maskiert.." &@Lf &"..darf nicht leer sein.." &@Lf &"..und muß mehr als 8 Zeichen haben!"
    Do
    $pw=InputBox("Kennwort eingeben", $Prompt, $NichtVorbesetzt, $PwMaske, 220, 140, 0, @DesktopHeight-150)
    Until ($pw<>"" And StringLen($pw)>7) Or $pw=$Admin
    MsgBox(0, "Kein Geheimnis", "Das Kennwort im Klartext:" &@Lf &$pw, $Nichtzulangeanzeigen)

    [/autoit]


    Gruß
    ytwinky

    (Ich) benutze stets die aktuelle (Beta) und SciTE..