Wie kann ich einen Vorgang, der beim 1. öffnen erfolgt ist, nicht wieder öffnen lassen?

  • Hallo zusammen,
    ich habe mir jetzt ein kleines Script zur Benutzer-ID und PW Abfrage gemacht. Es sieht folgendermaßen aus:

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Login", 301, 110, 192, 124)
    $BenutzerID = GUICtrlCreateLabel("Benutzer-ID:", 8, 8, 76, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Arial")
    $BenutzerIDEingabe = GUICtrlCreateInput("", 85, 6, 209, 21)
    $Passwort = GUICtrlCreateLabel("Passwort:", 8, 32, 62, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Arial")
    $PasswortEingabe = GUICtrlCreateInput("", 85, 30, 209, 21)
    $Speichern = GUICtrlCreateButton("Daten speichern", 149, 56, 145, 25, 0)
    $Login = GUICtrlCreateButton("Einloggen", 5, 56, 145, 25, 0)
    $LoginBeenden = GUICtrlCreateButton("Loginprozess abbrechen", 5, 80, 289, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Speichern
    $GesicherteBenutzerID = GUICtrlRead($BenutzerIDEingabe)
    $GesichertesPasswort = GUICtrlRead($PasswortEingabe)
    FileOpen("Logindaten.txt", 1)
    FileWriteLine("Logindaten.txt", $GesicherteBenutzerID)
    FileWriteLine("Logindaten.txt", $GesichertesPasswort)
    Case $LoginBeenden
    Exit
    Case $Login
    $BID = GUICtrlRead($BenutzerIDEingabe)
    $PW = GUICtrlRead($PasswortEingabe)
    FileOpen("Logindaten.txt", 0)
    FileReadLine("Logindaten.txt", 1)
    FileReadLine("Logindaten.txt", 2)

    If $PW = $GesichertesPasswort Then
    MsgBox(0, "Loginprozess", "Sie haben sich erfolgreich eingeloggt!")
    Else
    MsgBox(0, "Loginprozess", "Die von ihnen eingegebene Benutzer-ID oder das Passwort sind nicht korrekt.")
    EndIf

    EndSwitch
    WEnd

    [/autoit]

    Wenn ich irgendwelche Daten eingebe, speichert das Script alles korrekt ab, und klicke ich dann direkt auf Einloggen, klappt das auch prima. Wenn ich jedoch das Script schließe und wieder öffne, dann meine Daten eingebe, bekomme ich einen ERROR. Liegt ja vermutlich daran, das es die Datei mit den Daten schon gibt, also kann es sie nicht nochmal speichern. Wie kann ich es also hinbekommen, dass das Script nach dem festlegen eines PW's und einer ID nicht mehr nach selbigen frägt, und diese abspeichern will? (Ich weiß ich muss dann die GUI ein wenig ändern).

    Hilfe bitte, danke schonmal :)

  • Ich empfehle ich dir die Registry oder eine .ini Datei, da kannste schöner Speichern und auslesen. .txt ist da ungeeignet ;)

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Login", 301, 110, 192, 124)
    $BenutzerID = GUICtrlCreateLabel("Benutzer-ID:", 8, 8, 76, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Arial")
    $BenutzerIDEingabe = GUICtrlCreateInput("", 85, 6, 209, 21)
    $Passwort = GUICtrlCreateLabel("Passwort:", 8, 32, 62, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Arial")
    $PasswortEingabe = GUICtrlCreateInput("", 85, 30, 209, 21)
    $Speichern = GUICtrlCreateButton("Daten speichern", 149, 56, 145, 25, 0)
    $Login = GUICtrlCreateButton("Einloggen", 5, 56, 145, 25, 0)
    $LoginBeenden = GUICtrlCreateButton("Loginprozess abbrechen", 5, 80, 289, 25, 0)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Speichern
    $GesicherteBenutzerID = GUICtrlRead($BenutzerIDEingabe)
    $GesichertesPasswort = GUICtrlRead($PasswortEingabe)
    IniWrite(@ScriptDir & "\Logindaten.ini", "Login", "Username", $GesicherteBenutzerID)
    IniWrite(@ScriptDir & "\Logindaten.ini", "Login", "Password", $GesichertesPasswort)
    Case $LoginBeenden
    Exit
    Case $Login
    $BID = GUICtrlRead($BenutzerIDEingabe)
    $PW = GUICtrlRead($PasswortEingabe)
    $GesicherteBenutzerID = IniRead(@ScriptDir & "\Logindaten.ini", "Login", "Username", "")
    $GesichertesPasswort = IniRead(@ScriptDir & "\Logindaten.ini", "Login", "Password", "")
    If $PW = $GesichertesPasswort And $BID = $GesicherteBenutzerID Then
    MsgBox(0, "Loginprozess", "Sie haben sich erfolgreich eingeloggt!")
    Else
    MsgBox(0, "Loginprozess", "Die von ihnen eingegebene Benutzer-ID oder das Passwort sind nicht korrekt.")
    EndIf

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

    EndSwitch
    WEnd

    [/autoit]