|
| Gros bug avec tableau dynamique |
| Débuté par pierreavoye_no_spaam_, 17 déc. 2004 12:19 - 2 réponses |
| |
| | | |
|
| |
| Posté le 17 décembre 2004 - 12:19 |
Bonjour, j'ai un gros problème avec un tabelau dynamique.
Avec une méthode (méthode1) d'un objet, je construit un tableau dynamique d'une structure contenant des chaîne(reference, designation, quantité, etc..):
resulta est un tableau dynamique de 0 UnePièce je le redimensionne à chaque fois que je le rempli : Dimension(resulta,Dimension(resulta)+1)
A la fin de ma fonction, je vérifie que le remplissage de mon tableau s'est bien déroulé... Tout va bien, j'ai 36 éléments avec les valeurs attendues (issues d'une requete sql sur une base externe)
Une méthode dans une autre classe (méthode2) appelle cette fonction afin de récupérer ce tableau.
Dimension me dit qu'il y a effectivement bien 36 éléments Donc le passage en paramètre a l'air de fonctionner.
<i>Au débug, je me rend compte qu'il y a un gros problème :</i> l'indice 1 du tableau dynamique récupéré en paramètre pointe sur le 36ème élement du tableau en sortie de méthode1... Bien évidemment, le reste du tableau est peuplé de 0...
Question, je fais quoi ?
Merci ! |
| |
| |
| | | |
|
| | |
| |
| Posté le 17 décembre 2004 - 12:41 |
Salut
>Question, je fais quoi ?
Tu pourrais commencer par donner plus de détails, un bout de code, parce que là on a pas grand chose.
Ciao http://wdgotcha.atspace.com |
| |
| |
| | | |
|
| | |
| |
| Posté le 17 décembre 2004 - 13:28 |
L'appel
CetteAffaire:ConstruitArbrePourUnOF(ListeDesPièces:ExtraitPourUnOF_EtUnNiveau(1,1))
Les méthodes
PROCEDURE ExtraitPourUnOF_EtUnNiveau(nof,nniv) //nof,nif entiers i,cpttab est un entier resulta est un tableau dynamique de 0 UnePièce
cpttab=1 POUR i=1 A :tailleTab SI :liste[i]:numof = nof ET :liste[i]:niv=nniv ALORS Dimension(resulta,Dimension(resulta)+1) resulta[cpttab]=:liste[i] FIN FIN
RENVOYER resulta
PROCEDURE ConstruitArbrePourUnOF(ListePiècesPourOf) i,maxi,cptNT est un entier NonTraités est un tableau de 2048 entiers ListeNonTraités est un tableau dynamique de 0 UnePièce makelog est une chaîne
maxi = Dimension(ListePiècesPourOf)
POUR i=1 A maxi makelog += ListePiècesPourOf[i]:ref makelog += TAB + NumériqueVersChaine(ListePiècesPourOf[i]:id) makelog += TAB + NumériqueVersChaine(ListePiècesPourOf[i]:previd) makelog += RC FIN fSauveTexte("c:\bilans.log",makelog)
i=1 :ListeNomanclature[ListePiècesPourOf[i]:numof] = allouer un objet Noeud("Racine","Ref Racine",0,Vrai,0,-1)
POUR i =1 A maxi SI ListePiècesPourOf[i]:id=ListePiècesPourOf[i]:previd ALORS SI ListePiècesPourOf[i]:numof <>0 ALORS :ListeNomanclature[ListePiècesPourOf[i]:numof]:Constructeur(ListePiècesPourOf[i]:desi,ListePiècesPourOf[i]:ref,ListePiècesPourOf[i]:prix_ach,1,ListePiècesPourOf[i]:codecmpt,ListePiècesPourOf[i]:id) SINON SI ListePiècesPourOf[i]:numof <>0 ALORS SI :ListeNomanclature[ListePiècesPourOf[i]:numof]:CréerSousid(ListePiècesPourOf[i]:previd,ListePiècesPourOf[i]:ref,ListePiècesPourOf[i]:prix_ach,ListePiècesPourOf[i]:Flag_Noeud_au_sens_arborescence_Of_piece,ListePiècesPourOf[i]:codecmpt,ListePiècesPourOf[i]:id) = Faux ALORS cptNT++ NonTraités[cptNT]=i FIN FIN FIN FIN
Dimension(ListeNonTraités,cptNT) POUR i=1 A cptNT ListeNonTraités[i]=ListePiècesPourOf[NonTraités[i]] FIN :ConstruitArbrePourUnOF(ListeNonTraités);
voilà |
| |
| |
| | | |
|
| | | | |
| | |
|