Lit le fichier sp�cifi� dans un tableau 1D ou 2D
#include <File.au3>
_FileReadToArray ( $sFilePath, ByRef $vReturn [, $iFlags = $FRTA_COUNT [, $sDelimiter = ""]] )
$sFilePath | Chemin et nom du fichier � lire. |
$vReturn | Variable qui contiendra les donn�es retourn�es - pas n�cessairement un tableau. |
$iFlags |
[optionnel] Ajoutez plusieurs valeurs, autant que n�cessaire: $FRTA_NOCOUNT (0) - le tableau est index� � partir de 0, utilisez UBound() pour obtenir sa taille $FRTA_COUNT (1) - le nombre d'�l�ments est dans le premier �l�ment. (par d�faut) $FRTA_INTARRAYS (2) - Cr�e un "tableau de tableau" - voir Remarques $FRTA_ENTIRESPLIT (4) - Utilise une cha�ne avec d�limiteurs comme point de partage (par d�faut chaque caract�re d�finit un point de partage) |
$sDelimiter | [optionnel] Utilis� pour diviser davantage chaque ligne du fichier - par exemple la lecture des fichiers CSV dans un tableau 2D |
Succ�s: | Retourne 1 et $vReturn qui contient le tableau. |
�chec: | Retourne 0, et d�finit @error <> 0 et $vReturn = 0. |
@error: | 1 - Erreur d'ouverture du fichier 2 - Impossible de scinder le fichier 3 - Les lignes du fichier ont des nombres diff�rents de champs (seulement si le flag $FRTA_INTARRAYS n'est pas lev�) 4 - Aucun d�limiteur trouv� (seulement si le flag $FRTA_INTARRAYS n'est pas lev�) |
Si le d�limiteur n'est pas sp�cifi�, la fonction retourne un tableau 1D dans lequel chaque �l�ment contient une ligne du fichier - les terminaisons de ligne peuvent �tre n'importe quelle combinaison de @CR, @LF et @CRLF.
Lorsqu'un d�limiteur est sp�cifi� la fonction essaie de diviser davantage chaque ligne du fichier - la fa�on dont elle proc�de d�pend de la position du flag $FRTA_INTARRAYS.
Si le flag n'est pas lev� et si chaque ligne a le m�me nombre de champs s�par�es par le d�limiteur alors un tableau 2D est cr��, mais si ce n'est pas le cas, alors @error est d�fini � 3 et aucun tableau n'est retourn�.
Si le flag $FRTA_INTARRAYS est lev� la fonction cr�e un tableau 1D o� chaque �l�ment est un autre tableau contenant les champs de la ligne �clat�e suivant le d�limiteur - les lignes n'ont pas besoin d'avoir le m�me nombre de champs. Voir l'exemple ci-dessous.
Si le d�limiteur comprend plusieurs caract�res, alors le flag $FRTA_ENTIRESPLIT d�termine la m�thode d'�clatement.
#include <Array.au3> #include <File.au3> #include <MsgBoxConstants.au3> Example() Func Example() Local $aRetArray, $sFilePath = @TempDir & "\Test.txt" ; Cr�e un tableau 1D Local $aArray[] = ["0", "1", "2", "3", "4"] ; Ecrit dans le fichier _FileWriteFromArray($sFilePath, $aArray, Default, Default, @CRLF) Sleep(1000) ; Le relit - avec compteur _FileReadToArray($sFilePath, $aRetArray) _ArrayDisplay($aRetArray, "Tableau 1D avec compteur", Default, 8) ; Le relit sans compteur _FileReadToArray($sFilePath,$aRetArray, $FRTA_NOCOUNT) _ArrayDisplay($aRetArray, "Tableau 1D - sans compteur", Default, 8) ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Cr�e un tableau "carr�" 2D Local $aArray[][] = [ _ ["00", "01", "02", "03"], _ ["10", "11", "12", "13"], _ ["20", "21", "22", "23"], _ ["30", "31", "32", "33"]] _ArrayDisplay($aArray, "Original", Default, 8) ; Ecrit dans le fichier _FileWriteFromArray($sFilePath, $aArray, Default, Default, ",") Sleep(1000) ; Le relit - avec compteur _FileReadToArray($sFilePath, $aRetArray, Default, ",") _ArrayDisplay($aRetArray, "Tableau 2D - avec compteur", Default, 8) ; Le relit - sans compteur _FileReadToArray($sFilePath, $aRetArray, $FRTA_NOCOUNT, ",") _ArrayDisplay($aRetArray, "Tableau 2D - sans compteur", Default, 8) ; Lit dans le "tableau de tableaux" sans compteur _FileReadToArray($sFilePath, $aRetArray, $FRTA_COUNT + $FRTA_INTARRAYS, ",") _ArrayDisplay($aRetArray, "Tableau de tableaux - avec compteur", Default, 8) ; Maintenant, regarde � l'int�rieur du tableau de tableau retourn� _ArrayDisplay($aRetArray[1], "Tableau 1 dans RetArray - avec compteur", Default, 8) ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; R��crit un tableau 2D avec plusieurs d�limiteurs _FileWriteFromArray($sFilePath, $aArray, Default, Default, ":|") Sleep(1000) ; Relit en consid�rant chaque d�limiteur comme un point de scission _FileReadToArray($sFilePath, $aRetArray, $FRTA_NOCOUNT, ":|") _ArrayDisplay($aRetArray, "Eclate sur chaque caract�re", Default, 8) ; Relit en consid�rant l'ensemble des d�limiteurs comme point de scission _FileReadToArray($sFilePath, $aRetArray, $FRTA_NOCOUNT + $FRTA_ENTIRESPLIT, ":|") _ArrayDisplay($aRetArray, "Eclate sur l'ensemble des caract�res", Default, 8) FileDelete($sFilePath) EndFunc ;==>Example
#include <Array.au3> #include <File.au3> #include <MsgBoxConstants.au3> Example() Func Example() ; D�finit une variable pour passer � _FileReadToArray. Local $aArray = 0 ; Lit le fichier script courant dans un tableau en utilisant la variable d�finie pr�c�demment. ; $iFlag est d�finie � 0, le nombre d'�l�ments du tableau ne sera pas d�fini. Utilisez UBound() pour trouver la taille du tableau. If Not _FileReadToArray(@ScriptFullPath, $aArray, 0) Then MsgBox($MB_SYSTEMMODAL, "", "Une erreur est survenue lors de la lecture du fichier. @error: " & @error) ; Une erreur s'est produite en lecture du fichier du script courant. EndIf ; Affiche le tableau avec la fonction _ArrayDisplay. _ArrayDisplay($aArray) EndFunc ;==>Example