[resolu] ListAll() peut-on faire plus simple.. ?
Publié : lun. 28/juin/2010 19:45
Voilà une tite procédure pour lister fichier ou dossier ou les 2 avec possibilité d'afficher les extensions ou pas pour les fichiers.
Mais vu la taille du code ça me parait énorme. On doit surement pouvoir faire plus court. une idée ?
Mais vu la taille du code ça me parait énorme. On doit surement pouvoir faire plus court. une idée ?
Code : Tout sélectionner
global NewList fichier.s()
;QuoiLister
#dossier=2
#fichier=1
#all=0
;Mode (afficher les extensions pour les fichiers ou pas)
#EXToui=1
#EXTnon=0
Directory$ = "d:\"
; by Ar-S
Procedure ListAll(repertoire$,QuoiLister,Mode)
If ExamineDirectory(0, repertoire$, "*.*")
While NextDirectoryEntry(0)
select QuoiLister
;Tout lister
case #all
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
AddElement(fichier())
Fichier()=DirectoryEntryName(0)
NbrFichier=ListIndex(fichier())+1
Else
AddElement(fichier())
Fichier()=DirectoryEntryName(0)
NbrFichier=ListIndex(fichier())+1
EndIf
Phrase$="Nombre total de fichiers et de dossier : "
; ne lister que les fichiers
case #fichier
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
AddElement(fichier())
Fichier()=DirectoryEntryName(0)
NbrFichier=ListIndex(fichier())+1
endif
Phrase$="Nombre total de fichiers : "
; ne lister que les dossiers
case #dossier
If DirectoryEntryType(0) <> #PB_DirectoryEntry_File
AddElement(fichier())
Fichier()=DirectoryEntryName(0)
Nbrfichier=ListIndex(fichier())+1
EndIf
Phrase$="Nombre total de dossiers : "
EndSelect
Wend
FinishDirectory(0)
ResetList(fichier())
select mode
; On veut voir les extensions des fichiers
case #EXToui
Debug Phrase$+str(NbrFichier)
While NextElement(fichier())
Debug fichier()
Wend
; On ne veut pas voir les extensions des fichiers
case #EXTnon
Debug Phrase$+str(NbrFichier)
While NextElement(fichier())
if mid(fichier(),len(fichier())-3,1)="."
NomFichier$=left(fichier(),len(fichier())-4)
else
NomFichier$=fichier()
EndIf
Debug NomFichier$
Wend
EndSelect
EndIf
EndProcedure
;Exemple (activer le debug)
ListAll("d:\",#all,0)