OVH Cloud OVH Cloud

FindFirstFile

1 réponse
Avatar
Jérôme VERITE
Bonjour,
j'utilise FindFirstFile et FindNextFile pour parcourir recursivement une
arborescence et créer un menu dynamique
correspondant, tout fonctionne parfaitement à l'exception de l'ordre des
entrées dans mon menu.

J'aimerai obtenir l'ordre alphabétique, cela est-il faisable avec ces APIS
directement ou dois-je le gérer moi même en faisant mes petites
comparaisons?

Merci d'avance

Jérôme

1 réponse

Avatar
Homer J. Simpson
Jérôme,

Ce n'est pas faisable avec les API. Plutôt que te te coltnier tes
comparaisons à la mimine, je te conseille de charger les résulats de ta
recherche récursive dans un tableau de type String, un petit coup
d'algorithme QuicKSort ou Bubble desssus (dispo dans toute les bonnes
crêmeries), et tu peux recharger ton menu.

Allez, tiens comme c'est mon jour de bonté, voilà le code de l'agorithme de
tri...et son utilisation

'===============================================
Private Sub Form_Load()
Dim paMyFileArray(5) As String
Dim iiIndex As Integer

'Initialisation bidon
paMyFileArray(0) = "Martine.txt"
paMyFileArray(1) = "Erik.txt"
paMyFileArray(2) = "Antoine.txt"
paMyFileArray(3) = "Homer.txt"
paMyFileArray(4) = "Marge.txt"
paMyFileArray(5) = "Lisa.txt"

'Appel du tri (Croissant)
Call pvSimpleSort(paMyFileArray, True)
Debug.Print "---------- A l'endroit --------------------------"
For iiIndex = 0 To 5
Debug.Print paMyFileArray(iiIndex)
Next iiIndex

'Appel du tri (Décroissant)
Call pvSimpleSort(paMyFileArray, False)
Debug.Print "---------- A l'envers --------------------------"
For iiIndex = 0 To 5
Debug.Print paMyFileArray(iiIndex)
Next iiIndex
End Sub

Public Sub pvSimpleSort(ByRef iaArrayToSort() As String, ByVal ibAscending)
Dim isSwapValue As String
Dim isUpperBound As String
Dim ilI As Long
Dim ilJ As Long

isUpperBound = UBound(iaArrayToSort)
For ilI = 0 To isUpperBound - 1
For ilJ = ilI To isUpperBound
'Tri croissant
If ibAscending Then
If iaArrayToSort(ilI) > iaArrayToSort(ilJ) Then
isSwapValue = iaArrayToSort(ilI)
iaArrayToSort(ilI) = iaArrayToSort(ilJ)
iaArrayToSort(ilJ) = isSwapValue
End If
'Trui décroissant
Else
If iaArrayToSort(ilI) < iaArrayToSort(ilJ) Then
isSwapValue = iaArrayToSort(ilI)
iaArrayToSort(ilI) = iaArrayToSort(ilJ)
iaArrayToSort(ilJ) = isSwapValue
End If
End If
Next
Next
End Sub
'===============================================
Résultat :
---------- A l'endroit --------------------------
Antoine.txt
Erik.txt
Homer.txt
Lisa.txt
Marge.txt
Martine.txt
---------- A l'envers --------------------------
Martine.txt
Marge.txt
Lisa.txt
Homer.txt
Erik.txt
Antoine.txt



"Jérôme VERITE" a écrit dans le message de news:

Bonjour,
j'utilise FindFirstFile et FindNextFile pour parcourir recursivement une
arborescence et créer un menu dynamique
correspondant, tout fonctionne parfaitement à l'exception de l'ordre des
entrées dans mon menu.

J'aimerai obtenir l'ordre alphabétique, cela est-il faisable avec ces APIS
directement ou dois-je le gérer moi même en faisant mes petites
comparaisons?

Merci d'avance

Jérôme