Tableau dynamique

Messages postés
46
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
10 juin 2007
- - Dernière réponse : cs_rt15
Messages postés
3982
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
Afficher la suite 

10 réponses

Messages postés
1100
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
15 avril 2018
0
Merci
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
Commenter la réponse de Polack77
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
73
0
Merci
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>
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
46
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
10 juin 2007
0
Merci
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.
Commenter la réponse de therafou
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
73
0
Merci
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>
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
1100
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
15 avril 2018
0
Merci
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
Commenter la réponse de Polack77
Messages postés
1100
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
15 avril 2018
0
Merci
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
Commenter la réponse de Polack77
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
73
0
Merci
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>
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
1100
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
15 avril 2018
0
Merci
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
Commenter la réponse de Polack77
Messages postés
1100
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
15 avril 2018
0
Merci
[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
Commenter la réponse de Polack77
Messages postés
3982
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
9
0
Merci
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).
Commenter la réponse de cs_rt15