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?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
'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
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
'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" <veritejerome@wanadoo.fr> a écrit dans le message de news:
eEKe1tVbDHA.2928@tk2msftngp13.phx.gbl...
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?
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
'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?