Je scanne mes dossiers et sous-dossiers pour en obtenir le contenu.
Ensuite je ne conserve que le chemin du fichier qui me permettra par la suite de re-créer les dossiers et sous-dossiers avant un dépackage.
Mais si j'ai 5 fichiers dans un dossier, je vais avoir 5 fois ce chemin par exemple :
Dossier1/Dossier2/Dossier2/
Donc je devais supprimer les doublons.
Après avoir pas mal galéré, j"ai trouvé ce code qui fonctionne, même si j'imagine que les "Map", n'ont pas été faites pour ça

Code trouvé ici : http://rosettacode.org/wiki/Remove_dupl ... #PureBasic
Code : Tout sélectionner
EnableExplicit
Structure sPath
Path$
EndStructure
Debug "========== AVANT SUPPRESSION DES DOUBLONS"
Debug "=========="
; Cette liste chaînée ne sert qu'a voir un exemple des doublons que l'on peut avoir
NewList Chemin.sPath()
AddElement(Chemin()) : Chemin()\Path$ = "dossier1/dossierTruc/dossierMachin/Bidule/"
AddElement(Chemin()) : Chemin()\Path$ = "dossier1/dossierTruc/dossierMachin/" ; Doublon
AddElement(Chemin()) : Chemin()\Path$ = "dossier2/dossierTruc/dossierMachin/"
AddElement(Chemin()) : Chemin()\Path$ = "dossier1/dossierTruc/dossierDifferent/"
AddElement(Chemin()) : Chemin()\Path$ = "dossier4/dossierTruc/dossierMachin/"
AddElement(Chemin()) : Chemin()\Path$ = "dossier1/dossierTruc/dossierMachin/" ; Doublon
AddElement(Chemin()) : Chemin()\Path$ = "dossier1/dossierTruc/dossierMachin/" ; Doublon
AddElement(Chemin()) : Chemin()\Path$ = "dossier1/dossierTruc/dossierMachin/" ; Doublon
AddElement(Chemin()) : Chemin()\Path$ = "dossier7/dossierTruc/dossierMachin/"
AddElement(Chemin()) : Chemin()\Path$ = "dossier1/dossierSecret/dossierMachin/"
; Trie la liste en fonction du champ 'Path$'qui est une chaîne de caractères (String)
; Le trie ici, ne sert qu'à mieux voir les doublons.
SortStructuredList(Chemin(), #PB_Sort_Ascending, OffsetOf(sPath\Path$), #PB_Sort_String)
ForEach Chemin()
Debug Chemin()\Path$
Next
Debug "=========="
Debug "========== APRES SUPPRESSION DES DOUBLONS"
Debug "=========="
; Code trouvé ici : http://rosettacode.org/wiki/Remove_duplicate_elements#PureBasic
NewMap MyElements$()
MyElements$("dossier1/dossierTruc/dossierMachin/Bidule/") = "dossier1/dossierTruc/dossierMachin/Bidule/"
MyElements$("dossier1/dossierTruc/dossierMachin/") = "dossier1/dossierTruc/dossierMachin/"
MyElements$("dossier2/dossierTruc/dossierMachin/") = "dossier2/dossierTruc/dossierMachin/"
MyElements$("dossier1/dossierTruc/dossierDifferent/") = "dossier1/dossierTruc/dossierDifferent/"
MyElements$("dossier4/dossierTruc/dossierMachin/") = "dossier4/dossierTruc/dossierMachin/"
MyElements$("dossier1/dossierTruc/dossierMachin/") = "dossier1/dossierTruc/dossierMachin/"
MyElements$("dossier1/dossierTruc/dossierMachin/") = "dossier1/dossierTruc/dossierMachin/"
MyElements$("dossier1/dossierTruc/dossierMachin/") = "dossier1/dossierTruc/dossierMachin/"
MyElements$("dossier7/dossierTruc/dossierMachin/") = "dossier7/dossierTruc/dossierMachin/"
MyElements$("dossier1/dossierSecret/dossierMachin/") = "dossier1/dossierSecret/dossierMachin/"
ForEach MyElements$()
Debug MyElements$()
Next