|
| Inicio → WINDEV 2025 → fListeFichier: récursif selon un nombre de répertoires enfants |
| fListeFichier: récursif selon un nombre de répertoires enfants |
| Iniciado por Nicolas ROBIN, 27,ago. 2019 11:59 - 2 respuestas |
| |
| | | |
|
| |
Miembro registrado 87 mensajes |
|
| Publicado el 27,agosto 2019 - 11:59 |
Bonjour,
Connaissez-vous une façon de faire qui permettrait de lister les fichiers d'un répertoire et ses sous répertoires mais en spécifiant une limite de nombre de sous répertoires dans lesquels rechercher.
fListeFichier("C:\MesDocuments\*.BMP", frRécursif + frInterruptible)
Utiliser fListeFichier avec le paramètre frRecursif est efficace mais très gourmand en ressources inutiles lorsque l'on a beaucoup de sous-répertoires à scruter bien qu'ils ne nous sont pas utiles.
Exemple:
niveauRepEnfant=2
REP 1 (Niveau 0 - PARENT) REP 1.1 (Niveau 1) REP 1.2 (Niveau 1) REP 1.3 (Niveau 1) REP 1.3.1 (Niveau 2) REP 1.3.2 (Niveau 2) REP 1.3.3 (Niveau 2) REP 1.3.3.1 (Niveau 3) REP 1.3.3.2 (Niveau 3) REP 1.3.3.3 (Niveau 3) REP 1.3.3.3.1 (Niveau 4) REP 1.3.3.3.2 (Niveau 4) REP 1.3.3.3.3 (Niveau 4)
Dans ce cas, le but serait de ne pas scruter les répertoires enfants de niveau 3 et supérieurs.
--
NR |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 11 mensajes |
|
| Publicado el 27,agosto 2019 - 15:06 |
Bonjour,
il me semble que tu as une version de flisterepertoire avec l appel d une procédure a laquelle tu passes un pointeur .
Apres une variable(pointeur) pour la profondeur en cours pourrait le faire non?
si profondeur>2 alors renvoyer faux (dans ta profondeur)?Mensaje modificado, 27,agosto 2019 - 15:13 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 7 mensajes |
|
| Publicado el 27,agosto 2019 - 15:30 |
Bonjour Nicolas,
Une possibilité parmi d'autres est de gérer la récursivité vous-même avec une fonction
Voici un exemple que vous pouvez adapter à vos besoins :
Procedure ListeFichiers(Fichier est une chaîne,Recursif est un entier) : chaîne
ChaineRetour est une chaîne = fListeFichier(Fichier,frNonRécursif)
NomRepertoire est une chaîne = Gauche(Fichier,Position(Fichier,"\",Taille(Fichier),DepuisFin)-1) NomFichier est une chaîne = Droite(Fichier,Taille(Fichier)-Position(Fichier,"\",Taille(Fichier),DepuisFin))
SI Recursif > 0 ALORS ListeRepertoires est une chaîne = fListeRépertoire(NomRepertoire,frNonRécursif) POUR TOUTE chaîne Repertoire de ListeRepertoires SEPAREE PAR RC ChaineRetour += [RC] + ListeFichiers(Repertoire+"\"+NomFichier,Recursif-1) FIN FIN
RENVOYER ChaineRetour
Ensuite vous n'avez plus qu'à l'appeler de cette manière :
ListeFichiers("C:\MesDocuments\*.BMP",3)
SJ |
| |
| |
| | | |
|
| | | | |
| | |
|