UDF > Debug >


_DebugArrayDisplay

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 = ""]]]]]]] )

Param�tres

$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.

Valeur de retour

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)

Remarques

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

Toutes les valeurs de colonne sont ignor�es pour les tableaux 1D.

Les noms $sHeader (s�par�s par le caract�re s�parateur en vigueur) seront utilis�s pour autant de colonnes qu'il y a de noms. Si aucune, ou pas assez, les noms personnalis�s sont sp�cifi�s puis les en-t�tes par d�faut de "Row|Col0" pour les tableaux 1D ou "Row|Col0|Col1|...|Col n" pour les 2D sont substitu�s. Si le tableau est affich� transpos�, les en-t�tes sont ignor�s.

Les 4 boutons en bas de la bo�te de dialogue ont les fonctions suivantes:
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.

Les dimensions du tableau sont affich�es en bas � gauche. Ils sont en texte rouge si le tableau est transpos� ou seulement une plage d'�l�ments est affich�e - une info-bulle affiche la/les occurrences particuli�res.

Si le param�tre "verbose" est d�fini dans $iFlags, une bo�te de dialogue splash s'affiche lors du traitement initial lorsque le tableau � afficher contient plus de 10000 �l�ments. Une bo�te de dialogue similaire est affich�e lorsque le bouton "Copy Data" est utilis� sur un affichage de plus de 10000 �l�ments - si cela est susceptible de se produire, une "Fonction Utilisateur" doit �tre utilis�e pour stocker le tableau pour un traitement ult�rieur.

Un �l�ment de tableau contenant un autre tableau est affich� comme {Array}.

Cliquez sur l'en-t�te d'une colonne pour la trier.

Exemple

#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