Diese UDF ist nicht gedacht, um in ein fertiges Skript eingebunden zu werden. Sie dient nur zur Unterstützung bei der Entwicklung.
- "ErrorList.au3" ist eine DEBUG-Hilfe zur Nutzung mit SciTE.
- Da die Auswertung von AutoIt-Makros erforderlich ist, müssen auch AutoIt-Funktionen verwendet werden.
- Der Funktionsaufruf, dessen Errorwerte gelesen werden, wird auch gespeichert und mit Hilfe des SciTE-Interface aus dem Skript gelesen.
- Sollte die UDF eingebunden sein, ohne dass das Skript in SciTE gestartet wird, führt das zu keinem Fehler, da das Interface nur angesprochen wird, wenn die SciTE.exe aktiv ist. Die Errorlist-Funktionen (bis auf _Remove) sind auch weiterhin nutzbar, enthalten aber nicht den Funktionsaufruf.
- WICHTIG
Die Funktionsaufrufe der ErrorList.au3 MÜSSEN allein in einer Zeile stehen (also NICHT: $a = 123, $err = _ErrorList_LastError() ). Hintergund ist, dass _Remove die gesamte Skriptzeile des Funktionsaufrufs löscht.
Funktionen:
- _ErrorList_Add()
Fügt die vorherige Skriptzeile der Error-List hinzu.
Gespeichert werden: @error, @extended, @ScriptLineNumber, Funktionsaufruf
Die Werte von @error, @extended werden beim Verlassen der Funktion wieder gesetzt und können normal ausgewertet werden. - _ErrorList_LastError($_iType)
Gibt den gewählten Typ (Standard: @error) des zuletzt erfassten Eintrags von _ErrorList_Add() zurück.
Als $_iType: 0=@error, 1=@extended, 2=Array [@error, @extended, @ScriptLineNumber, Funktionsaufruf], 3=String "@error|@extended|@ScriptLineNumber|Funktionsaufruf" (Trenner ist "Opt('GUIDataSeparatorChar')") - _ErrorList_List($_bErrorsOnly)
Gibt eine Auflistung aller durch _ErrorList_Add() erfassten Einträge in Listenform in die Konsole aus.
Standard ($_bErrorsOnly=True): Nur Einträge mit "@error <> 0" werden gelistet. - _ErrorList_Remove($_bIncl=False)
Entfernt sämtliche Funktionsaufrufe der ErrorList.au3 aus dem Skript (Standard).
Mit "$_bIncl=True" wird auch die entsprechende Include-Zeile entfernt
Das angefügte Beispiel bringt folgende Ergebnisse:
Beispiel
AutoIt
;-- TIME_STAMP 2022-03-10 13:58:40
#include "ErrorList.au3"
#include <File.au3>
_Test_1()
_Clear()
_Test_2()
_Clear()
_Test_3()
_Clear()
_Test_4()
_Clear()
Func _Test_1()
Local $aFile = _FileListToArray('C:\Gibt-Es-Nicht\Pfad', 1) ; FLTA_FILES
_ErrorList_Add()
If @error Then ConsoleWrite(@CRLF & '>> Fehlerwert wird durchgeleitet, @error: ' & @error & @CRLF)
; einige Operationen um den Fehlerspeicher neu zu belegen
ClipPut('irgendwas')
Local $clip = ClipGet() ; fehlerfrei
ConsoleWrite('>> ClipGet @error: ' & @error & @CRLF)
; Abfrage des letzten registrierten Fehlers als String: "@error|@extended|@ScriptLineNumber|Funktionsaufruf"
ConsoleWrite('-> ' & _ErrorList_LastError(3) & @CRLF & @CRLF)
MsgBox(0, 'Test 1', 'Weiter zu Test 2.')
EndFunc
Func _Test_2()
; alle Funktionsaufrufe werden der ErrorList hinzugefügt
; zuerst fehlerfreie Operationen
Local $iSizeMyDocs = DirGetSize(@MyDocumentsDir)
_ErrorList_Add()
Local $FileTime = FileGetTime(@AutoItExe)
_ErrorList_Add()
; jetzt ein Fehler
_MakeError()
_ErrorList_Add()
; weiter fehlerfrei
Local $FileVersion = FileGetVersion(@AutoItExe)
_ErrorList_Add()
Local $Attrib = FileGetAttrib(@AutoItExe)
_ErrorList_Add()
; Ausgabe ALLER Aufrufe als Liste in die Console
_ErrorList_List(False)
MsgBox(0, 'Test 2', 'Weiter zu Test 3.')
EndFunc
Func _Test_3()
; wie Test_2 - aber nur Auflistung der Fehler
; alle Funktionsaufrufe werden der ErrorList hinzugefügt
; zuerst fehlerfreie Operationen
Local $iSizeMyDocs = DirGetSize(@MyDocumentsDir)
_ErrorList_Add()
Local $FileTime = FileGetTime(@AutoItExe)
_ErrorList_Add()
; jetzt ein Fehler
_MakeError()
_ErrorList_Add()
; weiter fehlerfrei
Local $FileVersion = FileGetVersion(@AutoItExe)
_ErrorList_Add()
Local $Attrib = FileGetAttrib(@AutoItExe)
_ErrorList_Add()
; Ausgabe NUR FEHLERHAFTER Aufrufe als Liste in die Console (Standard)
_ErrorList_List()
MsgBox(0, 'Test 3', 'Weiter zu Test 4.')
EndFunc
Func _Test_4()
MsgBox(0, 'Test 4', 'ACHTUNG!' & @CRLF & _
'Jetzt werden alle "_ErrorList_" -Funktionen aus dem Skript gelöscht!' & @CRLF & _
'Nach Beendigung mit (mehrfachem) Ctrl+Z wieder das Original herstellen.' & @CRLF & _
'Dann "_ErrorList_Remove" mit dem Parameter "True" versehen und erneut ausführen.' & @CRLF & _
'Jetzt wird auch die Includezeile aus dem Skript entfernt. - Wiederherstellen, wie vorab.')
; Entfernen ALLER Funktionsaufrufe "_ErrorList_..."
; mit Parameter "(True)" wird auch die Includezeile gelöscht
_ErrorList_Remove(True)
EndFunc
Func _Clear()
$g_aErrList[0][0] = 0
ReDim $g_aErrList[1][4]
EndFunc
; Generieren von @error- und @extended Werten
Func _MakeError()
Local $a[] = [-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9]
Return SetError($a[Random(0,17,1)], $a[Random(9,17,1)])
EndFunc
Alles anzeigen
_ErrorList_LastError(3)
_ErrorList_List(False) - alle Einträge
_ErrorList_List() - Nur Einträge mit Fehlern