[Func] ArrayFileToArray - Fichier en tableau 2D.

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

[Func] ArrayFileToArray - Fichier en tableau 2D.

#1

Message par Tlem »

Voici une petite fonction qui semblerait utile pour certains. ;)
Cela fait deux ou trois fois que sur le forum quelqu'un cherche à transformer un fichier en tableau multidimensionnelle.

Cette fonction vous permet de créer un tableau multidimensionnel à partir d'un fichier de la forme :

Code : Tout sélectionner

Line1,Var1,Var2,Var3,Var4,Var5,Var6,Var7,Var8
Line2,Var1,Var2,Var3,Var4,Var5,Var6,Var7
Line3,Var1,Var2,Var3,Var4,Var5,Var6
Line4,Var1,Var2,Var3,Var4,Var5,Var6

Line6,Var1,Var2,Var3,Var4,Var5,Var6,Var7,Var8,Var9,Var10
La fonction s'adapte automatiquement à la dimension maximum du nombre d'éléments du tableau et vous permet de retourner ou non les lignes vides.

Cette fonction est très pratique pour utiliser un fichier CVS par exemple, mais elle va au delà de ça car vous pouvez aussi utiliser un séparateur plus complexe tel qu'un mot, une phrase ou une suite de caractères.
Si vous avez besoin de trier le tableau résultant sur un des élément, utilisez la fonction _ArraySort juste après la fonction. :wink:

Vous trouverez en fichier joint, la fonction avec trois exemples de traitement divers.

Bon code à tous. 8)

_ArrayFileToArray V1 téléchargé 114 fois.
Fichiers joints
_ArrayFileToArray.zip
(1.66 Kio) Téléchargé 704 fois
OldChapZ
Niveau 1
Niveau 1
Messages : 6
Enregistré le : lun. 15 sept. 2008 13:02
Status : Hors ligne

Re: [Func] ArrayFileToArray - Fichier en tableau 2D.

#2

Message par OldChapZ »

Merci. C'est exactement la fonction que je cherche (pas référencée directement sur Google :o )

Juste un souhait supplémentaire : La ligne 0 du tableau renvoyé est vide et les entêtes de colonne sont dans L[1]. Je n'ai pas trouvé (ni vraiment osé) comment modifier le code pour avoir la première ligne dans L[0].

Merci d'avance.

[Edit1] J'ai aussi une colonne de trop mais c'est la dernière ($iSecondElement ? Non ? )
[Edit2] Pas de colonne de trop : C'est moi qui ai un séparateur de trop à la fin de ma ligne :oops:
[Edit3] J'ai trouvé (je crois) : la ligne 53
$avArray[$avArrayCount][$iCount2 - 1] = $aSplit[$iCount2] devient
$avArray[$avArrayCount-1][$iCount2 - 1] = $aSplit[$iCount2]
Il faut aussi modifier la ligne 36 (pour éviter une ligne vide à la fin du tableau)
Local $avArray[$aArray[0] +1 - $iEmptyLines][$iMaxElement] devient
Local $avArray[$aArray[0] - $iEmptyLines][$iMaxElement]

Désolé, j'aurai pu chercher d'abord. Encore merci pour la fonction (je m'étonne qu'elle ne soit pas intégrée ou au moins plus connue)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Func] ArrayFileToArray - Fichier en tableau 2D.

#3

Message par Tlem »

Votre modification n'est pas complète, car il faudrait aussi modifier la ligne pour le cas ou $EmptyLine = 1. ;)

En accord avec votre suggestion, j'ai mis à jour la fonction afin de prendre en compte un nouveau paramètre.
Ce paramètre ($IndexBase) permet de retourner le tableau sous deux forme différentes :

Par défaut $IndexBase = 0 retourne le tableau avec les premières valeurs dans l'index 0.
Si $IndexBase = 1, alors les premières valeurs seront dans l'index 1 et l'index 0 contiendra le nombre d'éléments (lignes).

J'en ai profité pour rajouter un contrôle pour les variables $EmptyLine et $IndexBase afin de gérer uniquement 0 ou 1.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
OldChapZ
Niveau 1
Niveau 1
Messages : 6
Enregistré le : lun. 15 sept. 2008 13:02
Status : Hors ligne

Re: [Func] ArrayFileToArray - Fichier en tableau 2D.

#4

Message par OldChapZ »

Dommage, j'étais content de moi :(
Heureux, néanmoins, d'avoir contribué à l'amélioration.
Je reprends l'original qui est maintenant parfait :wink:
Répondre