PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → lister les sous repertoires d'un répertoire
lister les sous repertoires d'un répertoire
Débuté par guest, 03 nov. 2005 11:59 - 4 réponses
Posté le 03 novembre 2005 - 11:59
Bonjour,

comment fait on pour lister les sous repertoires d'un répertoire qui ne contiennent pas de fichier?

remarque : Sachant que la fonction "flistefichier" ne fonctionne pour ca, que s'il y a des fichiers dans ces repertoires en questions.

merci.
Posté le 03 novembre 2005 - 11:06
Salut pour le moment puisque nous en sommes a la version 9 voici un code
avec api:

code d'appel:
DÉBUT APPEL----------------------------------------------
tabRep est un tableau de 0 chaînes
ListeRep("C:\windev 9",tabRep,Faux,Faux,Faux)
iCpt est un entier
POUR iCpt = 1 A TableauInfo(tabRep,tiDimension)
Trace(tabRep[iCpt])
FIN
Trace(TableauInfo(tabRep,tiDimension))
FIN APPEL---------------------------------------------------

Fonction ListeRep:
DÉBUT----------------------------------------------
// Syntaxe :
//ListeRep (<strPath>, <tabRep>[, <bSourSep>[, <bRepCourant>[,
<bRepParent>]]])
//
// Paramètres :
// strPath : Répertoire de base où on veut lister les répertoires
// tabRep : Un tableau de 0 chaines qui sera remplis avec les répertoires
trouvés
// bSourSep : Flag permettant de spécifier si on veut lister les sous
répertoires
// bRepCourant : Flag indiquant si on veut ajouter le répertoire courant à
la liste (".")
// bRepParent : Flag indiquant si on veut ajouter le répertoire parent à la
liste ("..")
// Valeur de retour :
// Aucune
// Notes :
// Détaillez ici le fonctionnement.
// Précisez les cas particuliers et les limites.
//
PROCEDURE
ListeRep(strPath,tabRep,bSourSep=Faux,bRepCourant=Faux,bRepParent=Faux)
bAjouté est un booléen
FILE_ATTRIBUTE_DIRECTORY est un entier = 16
FILETIME est une structure
dwLowDateTime est un entier //Type C : DWORD
dwHighDateTime est un entier //Type C : DWORD
FIN
WIN32_FIND_DATAA est une structure
dwFileAttributes est un entier //Type C : DWORD
ftCreationTime est un FILETIME //FILETIME est une autre structure
ftLastAccessTime est un FILETIME //FILETIME est une autre structure
ftLastWriteTime est un FILETIME //FILETIME est une autre structure
nFileSizeHigh est un entier //Type C : DWORD
nFileSizeLow est un entier //Type C : DWORD
dwReserved0 est un entier //Type C : DWORD
dwReserved1 est un entier //Type C : DWORD
cFileName est une chaîne ASCIIZ sur 260 //Type C : CHAR
cAlternateFileName est une chaîne fixe sur 14 //Type C : CHAR
FIN

win_data est un WIN32_FIND_DATAA
iRetour est un entier
iHandle est un entier

strPath = ComplèteRep(strPath)
iHandle = API("KERNEL32","FindFirstFileA",strPath+"*.*"+Caract(0),&win_data)
SI iHandle <> -1 ALORS
iRetour = iHandle
TANTQUE iRetour <> 0
bAjouté = Faux
SI ETBinaire(win_data:dwFileAttributes,FILE_ATTRIBUTE_DIRECTORY) <> 0
ALORS
SELON win_data:cFileName
CAS "."
SI bRepCourant ALORS
bAjouté = Vrai
FIN
CAS ".."
SI bRepParent ALORS
bAjouté = Vrai
FIN
AUTRE CAS
bAjouté = Vrai
FIN
SI bAjouté ALORS
TableauAjoute(tabRep,strPath+win_data:cFileName)
SI bSourSep ALORS
ListeRep(strPath+win_data:cFileName,tabRep,bSourSep,bRepCourant,bRepParent)
FIN
FIN
FIN

iRetour = API("KERNEL32","FindNextFileA",iHandle,&win_data)
FIN
FIN
FIN--------------------------------------------------


Mathieu
Posté le 03 novembre 2005 - 14:42
Bonjour,

Ce sera possible en version 10 avec la commande fListeRep() : nouveauté de
WinDev 10.

--
Ed en Ligne


"prince" <guest@newsgroup.fr> a écrit dans le message de news:
4369e79e@news.pcsoft.fr...


Bonjour,

comment fait on pour lister les sous repertoires d'un répertoire qui ne
contiennent pas de fichier?

remarque : Sachant que la fonction "flistefichier" ne fonctionne pour ca,
que s'il y a des fichiers dans ces repertoires en questions.

merci.

Posté le 03 novembre 2005 - 16:39
Bonjour,

Vous avez un exemple dans la LST 62

WD Volets Midi

Cordialement

Albert
Posté le 04 novembre 2005 - 10:24
//En fait mon collegue de travail ma donné un bout de code qui foncionne avec fRep

rep_encours est une chaîne= fRep("C:\WebDev 9\*.*" ,frRépertoire)
TANTQUE rep_encours<>""
Trace(rep_encours)
rep_encours = fRep("")
FIN