Tableau dynamique

therafou Messages postés 46 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 10 juin 2007 - 19 juin 2006 à 11:00
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 19 juin 2006 à 19:08
Salut,


je cherche à gérer mes données dans un tableau dynamique pour effectuer
des traitements bien plus rapid. Le but est de stock uniquement les
chiffres à la suite qui sont les ID des éléments d'une base.

Où je pourrais trouvé une exemple pour la déclaration, l'ajout et la suppression.


merci

10 réponses

Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
19 juin 2006 à 11:59
Tu cherche quois????
Si c'est la déclaration + mise à la taille voulue de tableau dynamique c'est ças:

Dim NomVariable() as TypeVariable 'Déclaration

redim NomVeriablea(ValeurMini to ValeurMaxi) 'mise à la taille VOIR ATTENTION

Attention le redim redimensione les tableaux dynamique mais supprime du même coup les données présante il faut ajouter un "preserve" soit :

redim preserve NomVeriable(ValeurMini to ValeurMaxi) 'Mise à la taille + sauv des donée présante

Si ce n'est pas cela que tu voulais esplique toi.

D'oh! Nuts!
Mmmmm...
 DONUTS
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 juin 2006 à 11:59
Ton problème est bien trop vague pour qu'on puisse t'aider : soit plus précis.

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
0
therafou Messages postés 46 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 10 juin 2007
19 juin 2006 à 12:08
Pour ce qui est du tableau s'est bon pour la déclaration et la redimention.

Maintenant pour ce qui est de supprimer un élément.


exemple:

tab(1)
tab(2)

tab(3)

tab(4)


je voudrais supprimer tab(2) uniquement.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 juin 2006 à 12:58
Passe par une collection : il s'agit d'une liste chaînée d'objet, ce qui est bien plus pratique pour gérer la suppression !

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
19 juin 2006 à 13:40
Si non (plutot que de passée par une collection) tu peut (c'est ce que j'ai fais une fois) :
remplacer le contenu de la 'case' de ton tableau à supprimer par la case suivante jusca la fin du tableau puis supprimer la dernierre 'case'. Le code :

dim Compteur as integer
Compeur = CaseASupprimer
do while Compteur < Ubound(tableau)
    tableau(compeur) = tableau(compeur + 1)
loop
redim preserve tableau (lbound(tableau) to ubound(tableau) - 1)

Heeeeeeee, DARKSIDIOUS comand fait tu une liste chainée en VB? Moi je sais pas faire , et ça m'interesse! Ou préfaire tu que je crée un topic?

D'oh! Nuts!
Mmmmm...
 DONUTS
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
19 juin 2006 à 13:43
HOULA!!!! J'ai hu comme un oubli dans le bout de code plus haut il faut bien sur incrémenter compeur à chaque tours de la boucle ce qui donne en final :

dim Compteur as integer
Compeur = CaseASupprimer
do while Compteur < Ubound(tableau)
    tableau(compeur) = tableau(compeur + 1)
    compteur = compteur + 1
loop
redim preserve tableau (lbound(tableau) to ubound(tableau) - 1)

Désol
D'oh! Nuts!
Mmmmm...
 DONUTS
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 juin 2006 à 14:18
La liste chaînée, c'est la collection justement : il est très simple avec la collection d'ajouter un élément, d'en enlever un, etc. Par contre, la recherche d'un élément en particulier est plus lente qu'avec un tableau, forcément !

Sinon, tu peux très bien faire ta propre liste chaînée avec des classes : un objet possèdant alors une référence vers l'objet suivant (attention cependant lors de la destruction de la liste chaînée de bien supprimer toutes les références à un objet avant de détruire l'objet lui même afin de ne pas avoir des fuites mémoires !)

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
19 juin 2006 à 14:29
OK, je sais command marche en théorie une liste chainée mais le code? Quel objet je dois déclarer? Le VB gére les pointeurs? Les variable se se délare en dynamique j'imagine. Peut tu me donnée un exemple (un petit 'bout' de code cois). Merci d'avance.

D'oh! Nuts!
Mmmmm...
 DONUTS
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
19 juin 2006 à 16:38
[auteurdetail.aspx?ID=59121 Therafou]

pense à valider la(les) réponce(s) qui t'on permis de résoudre à ton problème.
Désol de méttre mit à poser mes propres questions sur ce topic.

D'oh! Nuts!
Mmmmm...
 DONUTS
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
19 juin 2006 à 19:08
Polack77 -> C'est l'objet collection. il posséde les méthode Add, Erase...


Si le tableau n'est pas trié, il suffit de remplacer l'élément que tu
souhaites supprimer par le dernier du tableau puis de raccourcir
celui-ci. Ca vat un peut plus vite que de tout déplacer.


Je rappel que les collection sont moins rapide en accès et en parcourt mais plus
rapide en insertion et suppression (Pour des listes triées bien sûr)
que les tableaux.


Petit truc de prog un peu plus avancé : Quand on veut un tableau
dynamique très rapide et qu'on le redimenssione souvent, on le
redimessione par bloque : On gère une taille logique et on
alloue/désalloue 10 par 10 par exemple. (Le tableau de 100 case est
plein, hop je met la taille logique à 101 et j'alloue un tableau de 110
: plus besoin de réallouer avant un petit moment).
0
Rejoignez-nous