Les Snippets

Connexion

Supprimer les doublons d'un tableau de chaines

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 07/07/2008 08:23:59 et initié par PCPT [Liste]
Vue : 3098
Catégorie(s) : Chaîne de caractères
Langage sélectionné : VB6
Langages dispo pour ce code :
- VB6, VBA
- PHP 5
- C++
- C# 2.x, C# 3.x
- VB 2005, VB 2008
- Voir tous les langages pour ce code snippet



Langage : VB6 , VBA
Date ajout : 07/07/2008
Posté par PCPT [Liste]
Function RemoveDuplicatedItemsFromArray(ByRef  aArray() As  String) As  Long
'aArray     tableau à dédoublonner, peut être  vide ou non dimentionné, ne doit pas contrenir d'item CHR$(0)
'fonction   retourne le nombre d'items
    Dim asBuff() As String, lCount As Long, i As Long, j As Long, l As Long
    
    If ((Not (Not aArray)) = 0Then lCount = 0 Else lCount = UBound(aArray) - LBound(aArray) + 1
    If lCount Then
        If lCount = Then
'           rien à faire
            RemoveDuplicatedItemsFromArray = 1
        Else
'           travaille en tampon
            asBuff = aArray
            l = LBound(asBuff)
            For i = l To UBound(asBuff) - 1
                For j = i + To UBound(asBuff)
                    If (asBuff(i) = asBuff(j)) Then asBuff(j) =  vbNullChar
                Next j
            Next i
            
'            sauve
            j = l - 1
            For i = l To UBound(asBuff)
                If Not (asBuff(i) = vbNullChar)  Then
                    j = j + 1
                    aArray(j) = asBuff(i)
                End If
            Next i
'           resize +  retour
            ReDim Preserve aArray(l To j)
            RemoveDuplicatedItemsFromArray = UBound(aArray) - l + 1
        End If
    End If
    Erase asBuff
End Function

'---------------------
'EXEMPLE  D'UTILISATION
'---------------------
'
Private Sub Test()
    Dim asResult() As String, i As Integer
    ReDim asResult(To 20)
    For i = To 5
        asResult(i) = "ligne " & i
        asResult(i + 5) = "ligne " & i
        asResult(i + 10) = "ligne " & i
        asResult(i + 15) = "ligne " & i
    Next i
    Debug.Print RemoveDuplicatedItemsFromArray(asResult) & " lignes"
    Debug.Print "========"
    
    For i = LBound(asResult) To UBound(asResult)
        Debug.Print asResult(i)
    Next i
End Sub


Snippets en rapport avec : Tableau, Supprimer, Doublons, Chaines



Codes sources en rapport avec : Tableau, Supprimer, Doublons, Chaines

{Visual Basic, VB6, VB.NET, VB 2005} COMPRESSION
Fonction pour comprimer un tableau de byte...

{C / C++ / C++.NET} SUPPRIMER MERCI
Merci de supprimer Merci de supprimer Merci de supprimer Merci de supprimer Merci de supprimer ...

{Visual Basic, VB6, VB.NET, VB 2005} SUPPRIMER UN ÉLÉMENT D'UN TABLEAU
Lorsque vous créez des tableaux dynamiques en VB, vous serez peut-être ammenés à avoir besoin de sup...

{Visual Basic, VB6, VB.NET, VB 2005} TABLEAU INITIALISE
Je cherche une fonction me permettant de savoir si mes tableaux dynamiques [ ex: dim Tableau() as st...

{Visual Basic, VB6, VB.NET, VB 2005} GESTION DYNAMIQUE DES ITEMS - BIEN PLUS INTERESSANT QUE LES TABLEAUX DYNAMIQUES
Tout le monde a recours dans la programmation à des tableaux dynamiques, besoin de validation de val...

{SQL} SUPPRESSION DE DOUBLONS
C'est une suite de requêtes qui permettent de supprimer les doublons d'une table. Il y en a d'autre ...

{Delphi} COMPRENDRE UN PEU PLUS LES TABLEAUX EN RXRICHEDIT
Ce petit programme me sert d'appui pour comprendre étudier tout ce que je peut faire avec un tableau...

{Delphi} NETTOYAGE AUTOMATIQUE DE NOMS DE FICHIERS
Comme le titre l'indique, il s'agit ici de nettoyer des noms de fichiers pour aller à l'essentiel .....

{Delphi} STRINGGRID EXTENDED
Tableau 'StringGrid' élaboré contenant des fonctions étendues copier/coller/effacer, des fonctions d...

{PHP} FICHIER XML => TABLEAU ASSOCIATIF
Tous petit bout de code qui lit un fichier .xml et qui le stock dans un tableau de tableau associati...