[R] Problème de tableau dans un tableau

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
phenom0202
Niveau 1
Niveau 1
Messages : 4
Enregistré le : lun. 03 juin 2013 10:40
Status : Hors ligne

[R] Problème de tableau dans un tableau

#1

Message par phenom0202 »

Bonjour, voilà mon souci depuis un petit moment, j'aimerais afficher dans un fichier.txt ce que je reçois dans mon Tableau 2D mais pour cela j'ai besoin que celui-ci reprenne les informations stockées juste avant dans 2 tableaux à une dimension.
Je reçois bien les données que je veux dans mes 2 tableaux 1D mais quand j'arrive à vouloir les afficher dans mon tableau 2D, pas moyen ....


Voici un bout de code :
► Afficher le texte
voici un peu plus de détails en images :
► Afficher le texte
Si besoin de plus de détails, je pourrais les fournir.

Cordialement,
Phenom0202
Modifié en dernier par phenom0202 le jeu. 06 juin 2013 14:08, modifié 1 fois.
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [..] Problème de tableau dans un tableau

#2

Message par lesolutionneur »

Normal :
Dim $Tableau2D[11][3] = [[$arrayDate,$arrayNom]]
Cette ligne ne stocke que deux éléments ; ici deux arrays dans un array. (ça ne les fusionne pas !)
Il faut que tu remplisses les deux colonnes avec une boucle, je ne crois pas qu'il y ait une fonction pour le faire tout seul.
phenom0202
Niveau 1
Niveau 1
Messages : 4
Enregistré le : lun. 03 juin 2013 10:40
Status : Hors ligne

Re: [..] Problème de tableau dans un tableau

#3

Message par phenom0202 »

Merci de cette réponse, ça me met sur la bonne voie.

j'ai donc testé ceci :

Code : Tout sélectionner

 For $x = 1 to 6 Step 1
         Dim $Tableau2D[11][3] = [[$arrayDate[$x],$arrayNom[$x]]]
         _ArrayDisplay($Tableau2D,"")
         Next
Effectivement maintenant j'ai une ecriture mais seulement à la première ligne du Tableau2D et cela même à chaque incrémentation, c'est à dire que la première fois, sa écrit bien ce qu'il faut a la première ligne dans les 2 colonnes mais la deuxième fois, sa efface la première ligne d'avant pour y ajouter à cette même ligne ce qui devrait être à la ligne 2.
Avatar du membre
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [..] Problème de tableau dans un tableau

#4

Message par TopXm »

Hello :)

Ce que je pige pas c'est comment tu fais le lien entre tes deux tableaux (10 occurrences d'un côté et 7 de l'autre) ?

A priori y'a un même nom sur plusieurs dates mais lequel ?
phenom0202
Niveau 1
Niveau 1
Messages : 4
Enregistré le : lun. 03 juin 2013 10:40
Status : Hors ligne

Re: [..] Problème de tableau dans un tableau

#5

Message par phenom0202 »

Salut ,

pas de souci, je vais expliquer(enfin essayer ^^). Donc dans mon cas, je récupère ces données sur un site.Je vais faire dans le cas le plus simple, sur la page qui va être générée, il y aura 10 annonces, donc, 10 "Dates", pour chaque date, il y aura soit un ou plusieurs "Noms, prénoms" soit un "nom d'entreprise.
Ce qui fait que je peux récupérer sur la page par exemple 10 dates, 3 "noms, prénoms", donc ce qu'il fait que les autres seront des noms d'entreprise.
Dans mon cas sur la page générée, il y a 10 dates, 7 "Noms,Prénoms" et donc 3 noms d'entreprise.

j'espère avoir été clair :) .
Avatar du membre
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [..] Problème de tableau dans un tableau

#6

Message par TopXm »

Re,

Du coup en fait tu balances par colonnes toutes tes données sans aucune correspondance entre elles ?

Tu peux essayer ceci pour voir

Code : Tout sélectionner

#include <array.au3>

Local $Array1[11] = [10, "05/06/2013", "04/06/2013", "04/06/2013", "04/06/2013", "04/06/2013", _
                        "04/06/2013", "04/06/2013", "04/06/2013", "04/06/2013", "04/06/2013"]
Local $Array2[8] = [7, "Jean-bob", "Hugo", "Paul", "Emile", "Suzanne", "Fernande"]

Local $I
Local $Max = $Array1[0]

If $Array2[0] > $Max Then $Max = $Array2[0]

Local $Array3[$Max + 1][2] = [[$Max]]

For $I = 1 To $Max
    If $I <= $Array1[0] Then $Array3[$I][0] = $Array1[$I]
    If $I <= $Array2[0] Then $Array3[$I][1] = $Array2[$I]
Next

_ArrayDisplay($Array3)
 
NB : J'ai défini les tableaux à la main
phenom0202
Niveau 1
Niveau 1
Messages : 4
Enregistré le : lun. 03 juin 2013 10:40
Status : Hors ligne

Re: [..] Problème de tableau dans un tableau

#7

Message par phenom0202 »

Re,

J'édit cette réponse en ayant dit qu'à partir de _FileWriteFromArray le programme avait un bug, mais en faite c'est bon j'ai rectifié, il fallait juste que je mette aussi les noms d'entreprise si non le programme disait que le tableau n'était pas complet.

Donc je vous remercie pour les réponses données cela m'a bien aidé :)

Il ne me reste plus qu'à pofiner quelques petits trucs et ce sera bon.

Merci a vous :D
Avatar du membre
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [R] Problème de tableau dans un tableau

#8

Message par TopXm »

Re,
phenom0202 a écrit :J'édit cette réponse en ayant dit qu'à partir de _FileWriteFromArray le programme avait un bug, mais en faite c'est bon j'ai rectifié, il fallait juste que je mette aussi les noms d'entreprise si non le programme disait que le tableau n'était pas complet.
Hum, ben pourtant perso, j'ai l'impression qu'il y a une boulette dans le code de _FileWriteFromArray() de File.au3 au niveau de la gestion des
tableaux en 2D. En regardant le code initial :
► Afficher le texte_FileWriteFromArray
$iDims est défini comme suit :

Code : Tout sélectionner

Local $iDims = UBound($a_Array, 0)
Dans le cas présent on traite un array à 2 colonnes (donc de 0 à 1), donc $iDims = 2. Du coup dans le Switch on passe dans le Case 2 et on fait :

Code : Tout sélectionner

            For $x = $i_Base To $i_UBound
                $s_Temp = $a_Array[$x][0]
                For $y = 1 To $iDims
                    $s_Temp &= $s_Delim & $a_Array[$x][$y]
                Next
                If FileWrite($hFile, $s_Temp & @CRLF) = 0 Then
                    $ErrorSav = 3
                    ExitLoop
                EndIf
            Next
 
Ce qui me gène c'est l'ordre

Code : Tout sélectionner

For $y = 1 To $iDims (dans notre cas de 1 à 2)
Du coup ça tente de traiter $a_Array[$x][2] chose qui provoque un plantage.

Perso j'aurai codé ceci :

Code : Tout sélectionner

            For $x = $i_Base To $i_UBound
                $s_Temp = $a_Array[$x][0]
                For $y = 1 To $iDims - 1
                    $s_Temp &= $s_Delim & $a_Array[$x][$y]
                Next
                If FileWrite($hFile, $s_Temp & @CRLF) = 0 Then
                    $ErrorSav = 3
                    ExitLoop
                EndIf
            Next
 
Si je fais la modification comme décrite au dessus je n'ai pas de souci d'exécution.

Je me fourvoie complétement où il y a bien une boulette dans la fonction _FileWriteFromArray() pour les tableaux 2D ?

++
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] Problème de tableau dans un tableau

#9

Message par jchd »

C'est le ticket #2125
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [R] Problème de tableau dans un tableau

#10

Message par TopXm »

Ah OK merci Jchd :)
Répondre