[R] Aide pour _ArrayAdd sur un tableau 2D

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

[R] Aide pour _ArrayAdd sur un tableau 2D

#1

Message par GhostLine »

Code : Tout sélectionner

; *************************************************************
; * INTERFACAGE DE FICHIER PLAT - ECRIT PAR GHOST LINE - 2009 *
; *************************************************************

#include <Array.au3>

; -------------------------------------------------------------
; * DECLARATION DES VARIABLES                                 *
; -------------------------------------------------------------

$fichier_entree = "c:\test.paq"
Dim $array[100][6]
$i = 1 ; permet de sauter la première ligne

; -------------------------------------------------------------
; * PROGRAMME                                                 *
; -------------------------------------------------------------

; * BLOC LECTURE                                              *

$fichier_a_traiter = FileOpen($fichier_entree,0)
While 1
    $ligne = FileReadLine($fichier_a_traiter,$i+1)
    If @error = -1 Then ExitLoop ; code erreur de FileReadLine : on arrive a la fin du fichier ? on quitte la boucle
    $num_commande = StringMid($ligne,7,9)
    $recept_caisse = StringMid($ligne,41,5)
    $commentaire = StringMid($ligne,54,20)
    $quantite = StringMid($ligne,90,10)
    $date_exped = StringMid($ligne,115,8)
    $stock_dest = StringMid($ligne,154,5)

    $array[$i-1] [0] = $num_commande
    $array[$i-1] [1] = $recept_caisse
    $array[$i-1] [2] = $commentaire
    $array[$i-1] [3] = $quantite
    $array[$i-1] [4] = $date_exped
    $array[$i-1] [5] = $stock_dest
$i=$i+1
WEnd
_ArrayDisplay($array)
J'aimerai savoir de quelle manière je dois procéder pour réussir à ne pas avoir à déclarer un nombre de lignes dans mon array ...

HELP !
Modifié en dernier par GhostLine le lun. 10 août 2009 15:46, modifié 1 fois.
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Aide pour _ArrayAdd sur un tableau 2D

#2

Message par tolf »

Plusieurs solutions :
- vous comptez le nombre de lignes avec _FileCountLines.
- vous utilisez l'udf Array2D : http://www.autoitscript.fr/forum/viewto ... =21&t=1332

Ici, je vous conseille la première solution car sinon, vous devrez redimensionner à chaque fois l'array, ce qui risque de devenir lent, d'autant plus quand la taille de l'array est grande (à la fin du traitement).
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

Re: [..] Aide pour _ArrayAdd sur un tableau 2D

#3

Message par GhostLine »

Le "problème" est que je ne connais pas à l'avance les noms des fichiers que je vais traiter (ils vont l'être sur des paramètres, type date de création, ou certaines informations contenues dans les fichiers) ... je vais essayer de voir comment je peux goupiller ca.
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Aide pour _ArrayAdd sur un tableau 2D

#4

Message par tolf »

Vous déclarez le nombre de lignes dynamiquement en utilisant une variable :P
Je ne vois pas où est le problème :roll:
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

Re: [..] Aide pour _ArrayAdd sur un tableau 2D

#5

Message par GhostLine »

Je suis en train de faire mes tests et comptages avant la déclaration de l'array en fait (enfin j'essaye) : je compte les lignes des fichiers qui correspondent à mes critères, puis je créé l'array avec l'addition de ces lignes.

Edit : tolf, je ne suis pas sûr de bien comprendre votre réponse : il est possible de redimensionner une array à la volée sans en perdre le contenu ? ou bien vous parlez de créer une table de transition qui comporte l'ancien nombre d'entrée de la table + le nombre relevé dans le fichier suivant ?
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Aide pour _ArrayAdd sur un tableau 2D

#6

Message par tolf »

Ah votre array combine donc plusieurs fichiers, je pensais qu'elle ne contenait que le contenu d'un seul fichier.
Dans ce cas, vous pouvez faire comme cela :

Code : Tout sélectionner

$fichier1 = "nom du fichier"
$taille = _FileCountLines[$fichier1]
Dim $array[$taille][6]
_Traitement($fichier1, $array)

$fichier2 = "nom du fichier 2"
$taille = _FileCountLines[$fichier2]
$taille_array = Ubound($array)
ReDim $array[$taille_array  + $taille][6]
_Traitement($fichier1, $array, $taille_array)

Func _Traitement($fichier_a_traiter, ByRef $array, $start = 0)
    While 1
        $ligne = FileReadLine($fichier_a_traiter,$i+1)
        If @error = -1 Then ExitLoop ; code erreur de FileReadLine : on arrive a la fin du fichier ? on quitte la boucle
        $num_commande = StringMid($ligne,7,9)
        $recept_caisse = StringMid($ligne,41,5)
        $commentaire = StringMid($ligne,54,20)
        $quantite = StringMid($ligne,90,10)
        $date_exped = StringMid($ligne,115,8)
        $stock_dest = StringMid($ligne,154,5)

        $array[$start + $i-1] [0] = $num_commande
        $array[start + $i-1] [1] = $recept_caisse
        $array[start + $i-1] [2] = $commentaire
        $array[start + $i-1] [3] = $quantite
        $array[start + $i-1] [4] = $date_exped
        $array[start + $i-1] [5] = $stock_dest
        $i += 1
    WEnd
EndFunc
Pour les fichiers suivants, vous faites comme le deuxième.
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

Re: [R] Aide pour _ArrayAdd sur un tableau 2D

#7

Message par GhostLine »

Juste pour remonter la manière dont j'ai procédé :)
► Afficher le texte
Répondre