Pruefen, ob Variablen existieren

  • Hi Leute,

    ich habe ein Script geschrieben, in dem Variablen festgelegt, die spaeter in einer Textdatei gespeichert (ueber Speichern-Button) werden.
    Wenn ein Benutzer des Scripts vergisst, eine Variable festzulegen, gibt es eine haessliche Fehlermeldung von AutoIt3.
    Nun moechte ich, dass geprueft wird, ob die Variablen existieren und wenn nicht soll ne MSG-Box erscheinen mit dem Text: "Daten konnten nicht gespeicher werden, pruefe, ob du alle Felder ausgefuellt hast."
    Weiss jemand wie das geht? Habe das Script beigelegt.

    MfG,
    glidesurfer

    2 Mal editiert, zuletzt von glidesurfer (3. Januar 2007 um 16:10)

  • Du kannst die standart variable als 0 setzen - zb


    $variable = "0"


    Wenn der user sie NICHT verändert hats = nicht neu definiert - gibts fehler:

    [autoit]


    if $variable = "0" Then

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

    MsgBox(0, "Error", "Sie haben xxxxxxx nicht ausgefüllt!")

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

    Endif

    [/autoit]


    mfg

  • Danke, ich werde es mal ausprobieren, aber die Idee hatte auch schon mal und da gab es Fehler...

    edit: Jetzt weiss ich wieder, wo ich nicht weiter kam, die Variablen sind festgelegt, aber den if befehl kann ja so nicht anwenden:

    [autoit]

    If $msg = $but01 Then
    If $variable = "0" Then ???

    [/autoit]

    Das geht ja nicht. $but01 ist der "Speicher"-button

    MfG,
    glidesurfer

    Einmal editiert, zuletzt von glidesurfer (2. Januar 2007 um 15:06)

  • Hi,

    [autoit]

    ; $var = 0
    If Not IsDeclared( $var ) Then
    MsgBox( 0, "", "Variable nicht deklariert." )
    EndIf

    [/autoit]

    Sollte gehen

    Mfg

  • Danke, aber das ganze muss ja auf die Aktivierung eines Buttons geprüft werden. Also:

    [autoit]

    If $msg = $but01 Then

    [/autoit]

    Dahinter kann ja nicht noch ein If-Befehl stehen...

    MfG,
    glidesurfer

  • also ich weiß 100% dass du damit überprüfen kannst ob nen user nen wert gesetzt hat....

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    $Form1 = GUICreate("Deine GUI", 609, 529, 204, 116)
    GUICtrlCreateLabel("User Name", 24, 32, 54, 17)
    $Name = GUICtrlCreateInput("Name", 96, 32, 145, 21)
    GUICtrlCreateLabel("User Passwort", 264, 32, 69, 17)
    $Passwort = GUICtrlCreateInput("Passwort", 336, 32, 185, 21, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
    GUICtrlCreateGroup("UserDaten", 8, 8, 593, 57)
    $Bestaetigen = GUICtrlCreateButton("Bestaetigen", 112, 400, 321, 25, 0)
    $Feedback = GUICtrlCreateEdit("", 0, 432, 593, 89, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN))
    GUICtrlSetData(-1, "Feedback")
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState(@SW_SHOW)
    while 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit (0)
    Case $Bestaetigen
    If GUICtrlRead($Name) = "" Or GUICtrlRead($name) = "Name" Then
    MsgBox(48,"Usernamen vergessen.","Bitte geben Sie Ihreren Usernamen ein.")
    ElseIf GUICtrlRead($Passwort) = "" Or GUICtrlRead($Passwort) = "Passwort" Then
    MsgBox(48,"Passwort vergessen.","Bitte geben Sie Ihr Passwort ein.")
    Else
    ;in datei speichern
    EndIf
    EndSwitch
    WEnd

    [/autoit]


    des soll einfach nur nen auschnitt sein....
    ich würde an deiner stelle dein script nicht auf lauter if abfragen aufbauen sondern eine Switch-anweisung basteln...like this:

    Spoiler anzeigen
    [autoit]

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit (0)
    Case $usd
    $usdordner = FileSelectFolder("Waehle den USDownloader-Ordner!", "C:", 3)
    EndSwitch
    WEnd

    [/autoit]


    usw....außerdem würd ich das ganze noch optimieren..du fragst ja so ab...

    Spoiler anzeigen
    [autoit]

    $msg = GuiGetMsg()
    If $msg = $but01 Then
    $file01 = $usdordner & "\USDownloader.ini"
    EndIf
    If $msg = $but01 Then
    $file02 = $usdordner & "\captcha_reader.bat"
    EndIf

    [/autoit]


    ich würde das ganz vll in eine abfrage basteln like this:

    Spoiler anzeigen
    [autoit]

    $msg = GuiGetMsg()
    If $msg = $but01 Then
    $file01 = $usdordner & "\USDownloader.ini"
    $file02 = $usdordner & "\captcha_reader.bat"
    EndIf

    [/autoit]


    du brauchst ja nicht 100 mal abzufragen obs nun der wert ist^^
    PS:du könnst die speicherorte in einer box zwischenspeichern die man ls user nicht editieren kann...siehe script1 beim feedback da könntest du mit GUICtrlSetData ([handel], "text") arbeiten...

  • Danke. Genau das hat mir geholfen. Jetzt funktioniert es, habe auch ein bisschen optimiert, aber vielleicht hat ja wer noch nen Tipp fuer mich.
    Ich haenge mal die fertige Datei ran.

    MfG,
    glidesurfer

    Einmal editiert, zuletzt von glidesurfer (3. Januar 2007 um 16:10)

  • mhh...jetzt kommt fehlermeldung wenn es nicht gesetzt ist^^...muss die netzwerknummer nicht gesetzt werden???....wenn ich z.b. alles anklicke danach sofort aber wieder auf abbrechen...ist im grunde der wert nicht gesetzt(bzw leer)... es kommt dann aber keine fehlermeldung dass es nicht gesetzt ist...und so meint ich das mit der switch-anweisung ;)...

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #NoTrayIcon

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

    GUICreate("USD Config Tool GOCR-Version", 300, 220)
    GUISetState (@SW_SHOW)

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

    $usd = GUICtrlCreateButton ("USDownloader-Ordner waehlen...", 30, 20, 250)
    $gc = GUICtrlCreateButton ("GOCR.exe waehlen...", 30, 50, 250)
    $rec = GUICtrlCreateButton ("Reconnect-Datei waehlen...", 30, 80, 250)

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

    GUICtrlCreateLabel ("Netzwerk-Nr.:", 70, 120, 70)
    $netzwerk = GUICtrlCreateInput ("", 150, 120, 30, 20)
    GUICtrlSetState(-1,$GUI_ACCEPTFILES)
    $netz = GUICtrlCreateButton ("...", 190, 120, 30)

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

    $but01 = GUICtrlCreateButton ("Speichern", 70, 170, 80)
    $but02 = GUICtrlCreateButton ("Abbrechen", 150, -1, 80)

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $usd
    $usdordner = FileSelectFolder("Waehle den USDownloader-Ordner!", "C:", 3)
    Case $gc
    $gocr = FileOpenDialog("Waehle deine gocr.exe!", "C:\", "GOCR.exe(*.exe)", 1 + 4 )
    Case $rec
    $recdat = FileOpenDialog("Waehle deine Reconnect-Datei!", "C:\", "Reconnect-Datei(*.*)", 1 + 4 )
    Case $netz
    MsgBox(64, "Netzwerke", "1 = Congent, 2= Telia, 3 = Level 3", 10)
    Case $GUI_EVENT_CLOSE
    Exit (0)
    Case $but01
    $netzwert = GUICtrlRead (7)
    If Not IsDeclared("usdordner") Then
    MsgBox(48, "USD-Ordner vergessen.", "Bitte wähle deinen USD-Ordner!" )
    ElseIf Not IsDeclared("netzwert") Then
    MsgBox(48, "Netzwerk vergessen.", "Bitte gibt dein gewünschtes Netzwerk an!" )
    ElseIf Not IsDeclared("gocr") Then
    MsgBox(48, "GOCR.exe vergessen.", "Bitte wähle deine GOCR.exe!" )
    ElseIf Not IsDeclared("recdat") Then
    MsgBox(48, "Reconnect-Datei vergessen.", "Bitte wähle deine Reconnect-Datei!" )
    Else
    $file01 = $usdordner & "\USDownloader.ini"
    FileWrite($file01, @CRLF & @CRLF & "[Plugin_rapidshare.com]" & @CRLF)
    FileWrite($file01, "NetworkNum=" & $netzwert & @CRLF)
    FileWrite($file01, "WaitTime=0" & @CRLF)
    FileWrite($file01, 'RecogniseCMD="' & $gocr & '"' & @CRLF)
    FileWrite($file01, @CRLF & "[Schedule]" & @CRLF)
    FileWrite($file01, "item0_active=1" & @CRLF)
    FileWrite($file01, "item0_day=0" & @CRLF)
    FileWrite($file01, "item0_event=5" & @CRLF)
    FileWrite($file01, "item0_time=0" & @CRLF)
    FileWrite($file01, "item0_action=0" & @CRLF)
    FileWrite($file01, 'item0_actparam=""' & $recdat & '"|0|0"' )
    MsgBox(64, "Einstellungen gespeichert.", "Die Einstellungen wurden erfolgreich eingetragen!", 10)
    ExitLoop
    EndIf
    Case $but02
    ExitLoop
    EndSwitch
    Wend

    [/autoit]
  • USDownloader kenn och doch oO
    ist das nicht der "speziell für rapidshare" erstellte downloadmanager?