@error übergeben

  • Hi,

    ich stell mich mal wieder zu blöd.

    Ich möchte immer noch Laufwerke verbinden.
    Wenn das nicht klappt will ich einen entsprechenden Eintrag ins Log FIle schreiben.
    DriveMapAdd setzt ja den entsprechenden Wert in @error, aber wie ich den Wert dann an die funktion übergebe die das Log schriebt ist mir nicht klar.
    Ich weiss wohl dass es mit Return geht, aber wie ist mir nicht klar.

    Hier ein Schnipsel:

    [autoit]


    _ArraySearch($aUser, "CN=G-AbteilungXY" , 0, 0, 0, 1)
    If Not @error Then
    DriveMapDel("W:")

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

    DriveMapAdd("W:", "\\filsever\dfs\Benutzer\XY\")
    If @error Then
    MsgBox(0,"Fehler beim Mapping", "Fehler :" & @error); Messagebox ist nur zum testen, anstatt der Messagebox würde ich gerne _ErrorLog aufrufen mit dem entsprechenden Wert aus @error.

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

    EndIf
    EndIf

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

    Func _ErrorLog()

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

    If @error = 1 Then
    _WriteLogData("Netzlaufwerke NICHT verbunden - Undefinierter / anderer Fehler. @extended enthält den Rückgabewert der Windows API.")
    ElseIf @error = 2 Then
    _WriteLogData("Netzlaufwerke NICHT verbunden - Der Zugriff auf die Remote-Freigabe wurde verweigert")
    ElseIf @error = 3 Then
    _WriteLogData("Netzlaufwerke NICHT verbunden - Das Gerät ist bereits zugewiesen")
    ElseIf @error = 4 Then
    _WriteLogData("Netzlaufwerke NICHT verbunden - Ungültiger Gerätename")
    ElseIf @error = 5 Then
    _WriteLogData("Netzlaufwerke NICHT verbunden - Ungültige Remote-Freigabe")
    ElseIf @error = 6 Then
    _WriteLogData("Netzlaufwerke NICHT verbunden - Ungültiges Passwort")
    EndIf

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

    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von Camulus (25. Juni 2012 um 11:47)

    • Offizieller Beitrag

    @error wird nach jedem Befehl gesetzt, d.H. Wenn deine MsgBox ohne Fehler abläuft, dann wird @error auf 0 gesetzt und somit ist der alte Inhalt von @error futsch.
    Eine Lösung für dein Vorhaben ist, speichere @Error in einer Variable.

    Spoiler anzeigen
    [autoit]

    #Region - Timestamp
    ; 2012-06-25 11:19:12
    #EndRegion

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

    _ArraySearch($aUser, "CN=G-AbteilungXY" , 0, 0, 0, 1)
    If Not @error Then
    DriveMapDel("W:")

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

    DriveMapAdd("W:", "\\filsever\dfs\Benutzer\XY\")
    If @error Then
    $Error = @error
    MsgBox(0,"Fehler beim Mapping", "Fehler :" & $Error); Messagebox ist nur zum testen, anstatt der Messagebox würde ich gerne _ErrorLog aufrufen mit dem entsprechenden Wert aus @error.
    _ErrorLog($Error)
    Else
    $Error=""
    EndIf
    EndIf

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

    Func _ErrorLog($iError)

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

    If $iError = 1 Then
    _WriteLogData("Netzlaufwerke NICHT verbunden - Undefinierter / anderer Fehler. @extended enthält den Rückgabewert der Windows API.")
    ElseIf $iError = 2 Then
    _WriteLogData("Netzlaufwerke NICHT verbunden - Der Zugriff auf die Remote-Freigabe wurde verweigert")
    ElseIf $iError = 3 Then
    _WriteLogData("Netzlaufwerke NICHT verbunden - Das Gerät ist bereits zugewiesen")
    ElseIf $iError = 4 Then
    _WriteLogData("Netzlaufwerke NICHT verbunden - Ungültiger Gerätename")
    ElseIf $iError = 5 Then
    _WriteLogData("Netzlaufwerke NICHT verbunden - Ungültige Remote-Freigabe")
    ElseIf $iError = 6 Then
    _WriteLogData("Netzlaufwerke NICHT verbunden - Ungültiges Passwort")
    EndIf

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

    EndFunc

    [/autoit]