therafou
Messages postés46Date d'inscriptionmercredi 26 février 2003StatutMembreDernière intervention10 juin 2007
-
19 juin 2006 à 11:00
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDerniè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.
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 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?
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 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)
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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 !)
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 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.
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 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).