Duke49
Messages postés552Date d'inscriptionjeudi 12 octobre 2006StatutNon membreDernière intervention24 janvier 2023
-
3 janv. 2011 à 17:45
Duke49
Messages postés552Date d'inscriptionjeudi 12 octobre 2006StatutNon membreDernière intervention24 janvier 2023
-
3 janv. 2011 à 19:48
Salut à tous !
Bonne année et bonne santé !
Explication, j'ai une liste:
0 = A
1 = B
2 = A
Effet désiré, suppression doublons:
0 = A
1 = B
Voilà mon bout de code (non fonctionnel):
Dim FIND_COLLECTION As List(Of Object)
Dim i as Integer = 0
FIND_COLLECTION.Add("A")
FIND_COLLECTION.Add("B")
FIND_COLLECTION.Add("A")
While i < FIND_COLLECTION.Count
If FIND_COLLECTION.Item(i).Count > 1 then
FIND_COLLECTION.RemoveAt(i)
Else
i += 1
End If
End While
PS: un bug visual basic 2010 assez symatoche (gros plantage) ;
1) Mettez ceci dans un bouton:
Dim FIND_COLLECTION As List(Of Object)
Dim enu As New List(Of Object).Enumerator
2) Mettez un point d'arrêt dessus
3) Valider une fois la touche F8
4) Faite CTRL+G pour aller dans la fenêtre d'exécution
5) Mettez ceci: enu = FIND_COLLECTION.item(0)
6) Appuyez sur entrer ^^ MDR
Bonsoir,
Le meilleur moyen pour éviter d'avoir des doublons dans une collection c'est de tester si elle contient déjà un élément similaire au moment de l'ajout.
Dim FIND_COLLECTION As New List(Of Object)
Dim ListeElements() As String = {"A", "B", "B", "A"}
For Each Element As String In ListeElements
If Not FIND_COLLECTION.Contains(Element) Then
FIND_COLLECTION.Add(Element)
End If
Next
Duke49
Messages postés552Date d'inscriptionjeudi 12 octobre 2006StatutNon membreDernière intervention24 janvier 20234 3 janv. 2011 à 19:20
Effectivement tu as entièrement raison.
C'est d'une logique implacable, merci beaucoup banana32.
Même si tu me fournis le top de la logique...
Pour des raisons de choix je devais le faire.
J'ai trouver comment m'y prendre avec une méthode à l'ancienne ^^
Ne sachant toujours pas si il existe une méthode .NET je vais cependant la partager.
++
Dim FIND_COLLECTION As New List(Of Object)
Dim i As Integer = 0
Dim j As Integer = 0
While i < FIND_COLLECTION.Count
curList = FIND_COLLECTION.Item(i)
For j = 0 To FIND_COLLECTION.Count - 1
If FIND_COLLECTION.Item(j) = curList Then
If i <> j Then FIND_COLLECTION.RemoveAt(j)
End If
Next
i += 1
End While
Duke49
Messages postés552Date d'inscriptionjeudi 12 octobre 2006StatutNon membreDernière intervention24 janvier 20234 3 janv. 2011 à 19:48
Correction méthode vb6:
While i < FIND_COLLECTION.Count
curList = FIND_COLLECTION.Item(i)
While j < FIND_COLLECTION.Count
If FIND_COLLECTION.Item(j) = curList Then
If i <> j Then
FIND_COLLECTION.RemoveAt(j)
j = -1
End If
End If
j += 1
End While
j = 0
i += 1
End While