[VB6] Tableaux dynamiques, effacer un element.

Tableaux dynamiques, effacer un element. [VB6] - VB/VBA/VBS - Programmation

Marsh Posté le 08-11-2003 à 12:46:39    

Bonjour.
 
J'ai une classe : "clsMaClasse".
 
Et dans mon prog je fais un tableau dynamique avec cette classe :
 
Public MonTableau() As New clsMaClasse
 
bref j'ajoute plein d'element dans ce tableau aucun prob...
Mais je bloque au moment de devoir effacer un élément de ce tableau. Je ne trouve pas de fct dans VB qui permettent cela.
 
QUel est la methode la plus simple pour effacer un element?
 
Dois-je vraiment recopier chaque propriété de chaque element dans un nouveau tableau ?  
 
j'ai bien essayé une fonction trouvée sur VBfrance :  
 

Code :
  1. Public Sub Delete(ByRef tableau As Variant, element As Variant)
  2.   Dim i As Integer
  3.   For i = element To UBound(tableau) - 1
  4.     tableau(i) = tableau(i + 1)
  5.   Next
  6.   ReDim Preserve tableau(UBound(tableau) - 1)
  7. End Sub


 
Que j'aurais pu creer moi meme en fait, mais ca ne marche pas avec les tableau de classe. Ca marche uniquement avec un tableau de String ou Int etc...
 
Bref avant de pondre un algo de ouf, je voudrais savoir si y a pas une methode simple, que je ne trouve pas sur google ni rien.
 
Merci d'avance.  :hello:


Message édité par _maximus_ le 08-11-2003 à 12:46:52

---------------
Ptit con de goret je t'emmerde ^_^
Reply

Marsh Posté le 08-11-2003 à 12:46:39   

Reply

Marsh Posté le 08-11-2003 à 13:06:05    

Pour "schrinker" un tableau, je ne pense pas qu'il y ait d'autre moyen qu'une recopie écrasant l'objet devenu non désiré, un décalage en bloc en somme.
Sinon, on peut aussi avoir, à côté, un autre tableau de "drapeaux" qui dit quels indices sont valables ou invalidés. Au lieu d'écraser par les suivants dans tableau primaire, on met juste le drapeau à 0 à l'indice voulu.
 
Méfiance avec les For i = element To UBound(tableau) - 1
car y des langages où il effectue le premier passage même si UBound(tableau) - 1 < element (!!). Vaut mieux tester avant, des fois que ce soit le dernier élément qu'il faille "supprimer".

Reply

Marsh Posté le 08-11-2003 à 13:26:11    

Ok j'avais pensé a ça mais je voulais savoir si y avait pas un moyen bcp plus simple pour pas prog n'importe quoi...  
Merci :)


---------------
Ptit con de goret je t'emmerde ^_^
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed