Affiche un tableau 1D ou 2D dans une ListView pour aider le débogage
#include <Debug.au3>
_DebugArrayDisplay ( Const ByRef $aArray [, $sTitle = "DebugArray" [, $sArrayRange = "" [, $iFlags = 0 [, $vUser_Separator = Default [, $sHeader = Default [, $iMax_ColWidth = Default [, $hUser_Function = ""]]]]]]] )
$aArray | Tableau à afficher |
$sTitle | [optionnel] Titre de la boîte de dialogue. Par défaut, "DebugArray". |
$sArrayRange | [optionnel] Plage de lignes/colonnes à afficher. Par défaut, "" pour tableau entier. (Voir ci-dessous pour plus de détails) |
$iFlags | [optionnel] Détermine les options. Ajoutez ensemble les valeurs choisies: $ARRAYDISPLAY_COLALIGNLEFT (0) = (par défaut) Alignement du texte des colonnes à gauchet $ARRAYDISPLAY_TRANSPOSE (1) = Transpose le tableau (2D seulement) $ARRAYDISPLAY_COLALIGNRIGHT (2) = Alignement du texte des colonnes à droite $ARRAYDISPLAY_COLALIGNCENTER (4) = Alignement du texte des colonnes au centre $ARRAYDISPLAY_VERBOSE (8) = Verbeux - Affiche une MsgBox sur une erreur et fait surgir des écrans pendant le traitement de tableaux importants $ARRAYDISPLAY_NOROW (64) = Pas de colonne 'Row' affichée |
$vUser_Separator | [optionnel] Définit les options d'affichage des colonnes lors de la copie de donnée dans le presse-papier. Caractère = Séparateur des colonnes. Nombre = Largeur des colonnes fixes - les éléments plus longs seront tronqués. Par défaut = Caractère de séparation en vigueur (généralement "|"). |
$sHeader | [optionnel] Noms des colonnes en entête (chaîne des noms séparés par le caractère de séparation en vigueur - généralement "|"). Par défaut, voir Remarques. |
$iMax_Colwidth | [optionnel] Largeur maximale avec laquelle les colonnes le ListView se développent pour montrer leur contenu. Par défaut = 350 pixels. |
$hUser_Function | [optionnel] Une variable assignée avec une fonction définnie par l'utilisateur à exécuter. Par défaut, aucune. Voir Remarques. |
Succès: | Retourne 1 |
Échec: | Retourne 0 and définit @error comme suit: |
@error: | 1 - $aArray n'est pas un tableau 2 - $aArray a trop de dimensions (seulement 1D et 2D sont supportés) |
Si la fonction reçoit une variable qui n'est pas un tableau ou un tableau de plus de 2 dimensions, la fonction retourne une erreur et le script continue. Si le paramètre "verbose" est défini dans $iFlags, une boîte de dialogue MsgBox s'affichera pour vous permettre de quitter le script immédiatement ou de continuer le script avec le retour d'erreur normal.
Bien qu'il n'y ait pas de limites sur la taille du tableau à afficher, il existe une limitation sur les contrôles Windows qui fait que les en-têtes et colonnes d'un ListView ne s'alignent pas s'il y en a plus de 600 environ.
La syntaxe du paramètre $sArrayRange est celle qui suit:
"7" | Montre les lignes 0-7 avec toutes les colonnes |
"7:" | Montre les lignes de la 7 jusqu'à la dernière avec toutes les colonnes |
"|7" | Montre toutes les lignes avec les colonnes 0-7 |
"|7:" | Montre toutes les lignes avec les colonnes de la 7 à la dernière |
"7|7" | Montre toutes les lignes 0-7 avec les colonnes 0-7 |
"5:7" | Montre toutes les lignes 5-7 avec toutes les colonnes |
"|5:7" | Montre toutes les lignes avec les colonnes 5-7 |
"7|5:7" | Montre les lignes 0-7 avec les colonnes 5-7 |
"5:7|7" | Montre les lignes 5-7 avec les colonnes 0-7 |
"5:7|5:7" | Montre les lignes 5-7 avec les colonnes 5-7 |
Copy Data & Hdr/Row | Copie le tableau ou la/les lignes sélectionnées dans le presse-papiers en ajoutant l'en-tête complet et l'identification de ligne. |
Copy Data Only | Copie le tableau ou le/les lgnes sélectionnées dans le presse-papier avec aucun en-tête ou identification de ligne. |
Run User Func | Exécute la fonction définie par l'utilisateur passée dans $sUser_Function. Cette fonction est entièrement distincte de l'UDF et doit être créée et codée par l'utilisateur pour accepter 2 (et seulement 2) paramètres qui seront fournis par l'UDF elle-même: le tableau complet étant affiché et un tableau 1D contenant les index des lignes sélectionnées avec un compte dans l'élément [0]. Ces paramètres peuvent ensuite être utilisés dans la fonction utilisateur si nécessaire. Le bouton n'est pas affiché si aucune fonction n'est spécifiée. |
Exit script | Quitte le script immédiatement. |
#include <Debug.au3> #include <MsgBoxConstants.au3> Example() Func Example() ; Crée un tableau 1D à afficher Local $aArray_1D[5] = ["Item 0", "Item 1", "Un élément 2 plus long pour montrer l'élargissement de la colonne", "Item 3", "Item 4"] _DebugArrayDisplay($aArray_1D, "1D display") ; Crée un tableau 2D à afficher 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 display") $aArray_2D[5][5] = "Un élément plus long pour montrer l'élargissement de la colonne" _DebugArrayDisplay($aArray_2D, "Colonne élargie - Titres perso - pas de boutons ou de colonne 'Row'", Default, 32 + 64, Default, "AA|BB|CC|DD|EE|FF|GG|HH|II|JJ") ; Assigne une fonction utilisateur à une variable pour la passer en paramètre Local $hUserFunction = _UserFunc $aArray_2D[5][5] = "Alignement de la colonne défini à droite" _DebugArrayDisplay($aArray_2D, "Définit plage - aligne à droite - copie largeur colonne - fonction utilisateur", "3:7|4:9", 2, 15, "AA|BB|CC|DD|EE|FF", Default, $hUserFunction) _DebugArrayDisplay($aArray_2D, "Définit plage - transposé", "3:7|4:9", 1, Default, "AA|BB|CC|DD|EE|FF") ; Notez qu'il n'y a pas de nom de colonnes dans le transposé $aArray_2D[5][5] = "Alignement de colonne défini à gauche" Opt("GUIDataSeparatorChar", "!") _DebugArrayDisplay($aArray_2D, "! Séparateur d'en-tête", "3:7|4:9", Default, Default, "AA!BB!CC!DD!EE!FF") ; Crée une variable qui n'est pas un tableau pour provoquer une erreur - MsgBox est affiché suivant $iFlags Local $vVar = 0, $iRet, $iError $iRet = _DebugArrayDisplay($vVar, "Pas de MsgBox sur Erreur") $iError = @error MsgBox(0, "_DebugArrayDisplay() Erreur", "Retour sans Msgbox $iret =" & $iRet & " @error=" & $iError) $iRet = _DebugArrayDisplay($vVar, "MsgBox sur Erreur", Default, 8) $iError = @error MsgBox(0, "_DebugArrayDisplay() Erreur", "Retour avec Msgbox sans forcer l'arrêt $iret =" & $iRet & " @error=" & $iError) EndFunc ;==>Example ; Notez que la fonction utilisateur DOIT AVOIR DEUX paramètres même si vous ne souhaitez pas les utiliser tous les deux Func _UserFunc($aArray_2D, $aSelected) ; Mais si un paramètre n'est pas utilisé faire ceci pour éviter un avertissement de Au3Check #forceref $aArray_2D _DebugArrayDisplay($aSelected, "Selected cols") EndFunc ;==>_UserFunc