Zeigt ein 1D oder 2D Array in einem ListView um das Debuggen zu unterstützen
#include <Debug.au3>
_DebugArrayDisplay ( Const ByRef $aArray [, $sTitle = "DebugArray" [, $sArrayRange = "" [, $iFlags = 0 [, $vUser_Separator = Default [, $sHeader = Default [, $iDesired_Colwidth = Default [, $hUser_Function = ""]]]]]]] )
$aArray | Name des anzuzeigenden Arrays |
$sTitle | [optional] Titel für den Dialog. Standard = "DebugArray" |
$sArrayRange | [optional] Bereich der darzustellenden Zeilen/Spalten. Standard ("") = komplettes Array (siehe unten für Details) |
$iFlags | [optional] legt die UDF Optionen fest. Benötigte Werte sind zu addieren $ARRAYDISPLAY_COLALIGNLEFT (0) = (Standard) Ausrichtung Spaltentext - links $ARRAYDISPLAY_TRANSPOSE (1) = transponiert das Array (Zeilen und Spalten tauschen) (nur 2D) $ARRAYDISPLAY_COLALIGNRIGHT (2) = Ausrichtung Spaltentext - rechts $ARRAYDISPLAY_COLALIGNCENTER (4) = Ausrichtung Spaltentext - mittig $ARRAYDISPLAY_VERBOSE (8) = erweitert - zeigt bei einem Fehler eine MsgBox bzw. Splashscreens während große Arrays verarbeitet werden $ARRAYDISPLAY_NOROW (64) = Keine Spalte mit "Row" anzeigen |
$vUser_Separator | [optional] setzt die Spalten-Anzeige-Option während Daten in die Zwischenablage kopiert werden Zeichen = Trennzeichen zwischen den Spalten Zahl = feste Spaltenbreite - längere Items werden abgeschnitten Standard = aktuelles Trennzeichen (gewöhnlich "|"). |
$sHeader | [optional] Spaltennamen (Namen getrennt durch das aktuelle Trennzeichen - gewöhnlich "|"). Standard siehe Bemerkungen. |
$iDesired_Colwidth | [optional] Wenn positiv, maximale Breite, auf die eine ListView-Spalte erweitert wird, um den Inhalt anzuzeigen. Standard = 350 Pixel. Wenn negativ, werden alle Spalten, außer der ersten, die auf 55 gesetzt ist, auf Abs($iDesired_Colwidth) gesetzt. |
$hUser_Function | [optional] Eine Variable die mit der Benutzerfunktion verknüpft ist. Standard = keine. Siehe Bemerkungen. |
Erfolg: | 1 |
Fehler: | 0 und setzt @error wie folgt: |
@error: | 1 - $aArray ist kein Array 2 - $aArray hat zu viele Dimensionen. Es werden nur 1D und 2D Arrays unterstützt 3 - @error wird gesetzt, wenn die Funktion aufgerufen wird, ein _DebugReport() |
Falls der Funktion kein Array als Variable oder ein Array mit mehr als zwei Dimensionen übergeben wird, so gibt die Funktion einen Fehler zurück und das Skript wird fortgesetzt.
Falls der "verbose" Parameter in $iFlags gesetzt wird, so wird eine MsgBox dargestellt, welche die Möglichkeit bietet das Skript sofort zu beenden oder das Skript mit der Rückgabe des normalen Fehlercodes weiterzuführen.
Obwohl die Größe des Arrays, das angezeigt werden soll, nicht begrenzt ist, gibt es eine Windows-Controlbeschränkung, was bedeutet, dass der ListView-Header und -Spalten nicht ausgerichtet sind, wenn mehr als etwa 600 vorhanden sind.
Es werden nur 65525 Zeilen eines Arrays dargestellt. Die ist in AutoIt eine Begrenzung der Gesamtzahl von in einer GUI darstellbarer Controls. Außerdem können maximal 250 Spalten dargestellt werden.
Wenn der User versucht ein Array größer als diese Begrenzungen darzustellen, so wird diesen Begrenzungen ein "*" an die abgeschnittene Dimension angehängt und in rot dargestellt.
Es ist zu beachten, dass die Verwendung von $iArrayRange (anzuzeigende Elemente bestimmen) es ermöglicht Arrays größer als die Anzeigebegrenzungen darzustellen.
Der $sArrayRange Parameter-Syntax lautet wie folgt:
"7" | - zeigt die Zeilen 0-7 mit allen Spalten |
"7:" | - zeigt die Zeilen die auf 7 enden mit allen Spalten |
"|7" | - zeigt alle Zeilen mit den Spalten 0-7 |
"|7:" | - zeigt alle Zeilen mit den Spalten die auf 7 enden |
"7|7" | - zeigt die Zeilen 0-7 mit den Spalten 0-7 |
"5:7" | - zeigt die Zeilen 5-7 mit allen Spalten |
"|5:7" | - zeigt alle Zeilen mit den Spalten 5-7 |
"7|5:7" | - zeigt die Zeilen 0-7 mit den Spalten 5-7 |
"5:7|7" | - zeigt die Zeilen 5-7 mit den Spalten 0-7 |
"5:7|5:7" | - zeigt die Zeilen 5-7 mit den Spalten 5-7 |
#include <Debug.au3>
#include <MsgBoxConstants.au3>
Example()
Func Example()
; Erstellt ein 1D Array zum anzeigen
Local $aArray_1D[5] = ["Item 0", "Item 1", "Ein breites Item 2 um die Spaltenanpassung zu zeigen", "Item 3", "Item 4"]
_DebugArrayDisplay($aArray_1D, "1D Anzeige")
; Erstellt ein 2D Array zum anzeigen
Local $aArray_2D[25][15]
For $i = 0 To UBound($aArray_2D) - 1
For $j = 0 To UBound($aArray_2D, 2) - 1
$aArray_2D[$i][$j] = "Item " & StringFormat("%02i", $i) & StringFormat("%02i", $j)
Next
Next
_DebugArrayDisplay($aArray_2D, "2D Anzeige")
$aArray_2D[5][5] = "Ein breites Item um die Spaltenanpassung zu zeigen"
_DebugArrayDisplay($aArray_2D, "Angepasste Spalte - eigene Spaltennamens - keine Buttons oder Spalte mit 'Row'", Default, 32 + 64, Default, "AA|BB|CC|DD|EE|FF|GG|HH|II|JJ")
; Verbindet die User-Funktion mit einer Variable um diese als Parameter zu übergeben
Local $hUserFunction = _UserFunc
$aArray_2D[5][5] = "rechtsbündige Spaltenausrichtung"
_DebugArrayDisplay($aArray_2D, "Bereich gesetzt - rechtsbündig - Spaltenbreite kopieren - Benutzerfunktion", "3:7|4:9", 2, 15, "AA|BB|CC|DD|EE|FF", Default, $hUserFunction)
_DebugArrayDisplay($aArray_2D, "Bereich gesetzt - vertauscht", "3:7|4:9", 1, Default, "AA|BB|CC|DD|EE|FF") ; Es ist zu beachten, dass die Spaltennamen nicht getauscht werden
$aArray_2D[5][5] = "Spaltenausrichtung wird auf linksbündig gesetzt"
Opt("GUIDataSeparatorChar", "!")
_DebugArrayDisplay($aArray_2D, "! Trennzeichen der Überschrift", "3:7|4:9", Default, Default, "AA!BB!CC!DD!EE!FF")
; Erstellt eine nicht-Array Variable um einen Fehler zu erzwingen - eine MsgBox wird angezeigt, da $iFlags gesetzt ist
Local $vVar = 0, $iRet, $iError
$iRet = _DebugArrayDisplay($vVar, "Keine MsgBox bei einem Fehler")
$iError = @error
MsgBox(0, "_DebugArrayDisplay() Fehler", "Rückgabe ohne interne Msgbox $iret =" & $iRet & " @error=" & $iError)
$iRet = _DebugArrayDisplay($vVar, "MsgBox bei einem Fehler", Default, 8)
$iError = @error
MsgBox(0, "_DebugArrayDisplay() Fehler", "Rückgabe der internen Msgbox ohne das Beenden zu erzwingen $iret =" & $iRet & " @error=" & $iError)
EndFunc ;==>Example
; Es ist zu beachten, dass die Benutzerfunktion 2 Parameter haben muss, auch wenn man nicht vorhat beide zu verwenden
Func _UserFunc($aArray_2D, $aSelected)
; Falls kein Parameter verwendet werden soll, sollte die folgende Zeile eingefügt werden, damit Au3Check keine Warnung ausgibt
#forceref $aArray_2D
_DebugArrayDisplay($aSelected, "Ausgewählte Spalten")
EndFunc ;==>_UserFunc