LISTER LES FICHIERS D'UN RÉPERTOIRE ET DE SES SOUS-RÉPERTOIRES DANS UN LISTBOX

Signaler
Messages postés
267
Date d'inscription
lundi 22 septembre 2003
Statut
Membre
Dernière intervention
27 novembre 2005
-
cs_Kanjar
Messages postés
2
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
18 août 2006
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/20970-lister-les-fichiers-d-un-repertoire-et-de-ses-sous-repertoires-dans-un-listbox

cs_Kanjar
Messages postés
2
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
18 août 2006

Bonjour,

Pour ma part, je dirais que cette source m'a bien servie et qu'elle me parait suffisament commentée.
(en effet plus dans les API sont également commenter dans la source à Downloader)
... en tout cas suffisemment pour le débutant que je suis (
... alors que peut être pas assez pour le pro que semble être KALOBIT dans son profil
(KALOBIT, c'est rigolo tout ce que tu balance qd on voit que tu écris en parlant de la seule source que tu as laissé)
"Mon code est très peu commenté car je n'utilise que des méthodes basiques. Si toutefois ça vous dérange, je ferais un petit effort."

A part ça, pour ma part, j'ajouterai 2 petites amélioration :
- Dans la déclaration, il n'est pas besoin de "tailler" Chemin() avec la taille MAX_PATH, car cela impose après un Rtrim
- j'ai donc mis simplement "Chemin() As String " en ligne 47 du module
- et ajouter un RTrim dans la ligne suivante : "ResultatRecherche.Chemin(ResultatRecherche.Nombre) = RTrim(Chemin) '---chemin du fichier"
(la même modif ne peut être fait sur le "cFileName" car la variable est définie par l'API, il faudra donc nétoyer le résultat du nom de fichier après)

- les 2 Redim preserve à chaque nouvel enregistrement des 2 tableaux (ResultatRecherche.Chemin et ResultatRecherche.Fichiers) sont très couteux en temps.
(en effet, il faut par exemple 12sec sur ma machine pour parser des ssRepert qui comprennent 12000 fichiers contre 3 sec après modifs)
Voici les modifs que j'ai faites : (le principe est de dimensioner le tableau correctement une première fois et de l'agrandir si une erreur indique qu'il est trop petit) :
- ajout en début de fonction d'une constante pour gérer de combien agrandir les tableaux qd nécéssaire et ajouter un "On error ..."
Const icIncrementRedim As Integer = 1000
On Error GoTo GestErr
- ajout en fin de la fonction du gestionnaire d'erreur (il pourrait être paufiner, c un exemple)
sortie:
Exit Function
GestErr:
Select Case Err.Number
Case 9
If ResultatRecherche.Nombre < 2 Then
ReDim Preserve ResultatRecherche.Chemin(1 To icIncrementRedim)
ReDim Preserve ResultatRecherche.Fichiers(1 To icIncrementRedim)
Else
ReDim Preserve ResultatRecherche.Chemin(1 To UBound(ResultatRecherche.Chemin) + icIncrementRedim)
ReDim Preserve ResultatRecherche.Fichiers(1 To UBound(ResultatRecherche.Fichiers) + icIncrementRedim)
End If
Resume
Case Else
MsgBox Err.Description
Resume sortie
End Select
Belsteak
Messages postés
6
Date d'inscription
dimanche 4 juillet 2004
Statut
Membre
Dernière intervention
18 novembre 2004

Je viens de parcourir ce post en diagonale et je vois plein de choses qui font frêmir...
Je ne comprends pas pourquoi vous critiquez l'initiative de qqun qui poste une réponse à qqun d'autre.

Peut être que ce code n'est pas le sien, et alors ? Il aurait pu peut être mettre le lien vers le site ou il a trouvé l'info. Mais qui nous dit que ce site est le premier à avoir mis le code en route ? Alors il faut aller chercher dans les sources du site et poste le lien originel... etc etc. Au lieu de trouver une réponse rapide, on est parti dans les méandres d'internet.
Le but d'une recherche de code sur le net est de tomber rapidement sur un bout de code, une fonction, une piste qui permet de dépaner et fait souvent gagner d'innombrables heures de recherches et ou de programmation.
Si vous avez peur qu'on vous "fauche" votre code, ne le mettez pas sur le net, mais permettez moi de douter que dans des cas comme celui-ci vous soyez les seuls à avoir trouvé cette solution...

En ce qui concerne la clareté du code, il est peut être brouillon pour certains, mais il a le mérite d'exister.
Il ne s'agit pas non plus ici de créer un beau code lisible documenté, avec error trap et tout le toutim qu'il suffit de copier et de placer dans son programme sans rien faire. Ce genre de comportement fera que dans le prochain programme on est condamné à faire la même chose et l'on apprend rien.
Cela n'empêche pas que plus le code sera lisible et documenté, plus il sera facile à utiliser.

La lecture de ce post permet d'apprendre une technique et des outils à utiliser. A partir de ce code, on pourra construire le sien, l'améliorer, le modifier à volonté pour lui donner la forme que l'on veut.
Enfin bon...
Finalement j'ai trouvé ce que je cherchais... En .net c'est beaucoup plus court pour faire la liste des fichiers d'un répertoire...
yomm
Messages postés
515
Date d'inscription
dimanche 17 février 2002
Statut
Membre
Dernière intervention
10 mars 2008
2
ok, j'ai juste mi la fonction pour info...j'ai mis ce source en 5 minutes vu ke je l'avais extrait d'un code qui trainait sur mon PC...kelk'un cherchait une réponse je lui ai proposé cela ...maintenant désolé si je n'ai pa détaillé le type perso...je pensais que les commentaires étaient suffisant....le prochaine fois je mettrai toutes les déclarations comme ça il faudra juste faire un copier/coller ;-)

Je prendrai plus de temps pour les réponses aux forums....en même temps je me dis k'au moins lorske la personne a posé sa kestion sur le forum elle a eut une réponse rapide....

@+

PS:
J'ai rien contre ta remark mais j'ai trouvé un peu fort ke tu me diz ke mon code posté par kelk'1 d'autre était 100 fois plus intéressant ke mon propre code en sachant ke les infos k'il a trouvé semble bien etre du copier/coller de la MSDN...

re-PS:
sans rancune ;-)))
kalobit
Messages postés
169
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
7 avril 2008
2
avoue au moins que le sien est mieux documenté.

j'ai pas eu à télécharger quoi que ce soit pour m'en faire un code perso

Et le commentaire qui reviens le plus souvent sur les posts c'est que les variables ne sont pas définies ou décrites. Et voilà, comme d'hab.

Un post pour les débutants doit être très clairement documenté.
Surtout que vu le nombre de résultat qu'il y a quand tu fais une recherche sur le site, si tu dois DL tous les zip pour être sur d'avoir tout ce qu'il te faut, je te souhaite bien du courage.

La moindre des choses, c'est une déclaration claire, c'est la base du code alors pourquoi la négilger.
Ce qui m'a surtout géné c'est ton type perso. pas une info.
Voilà, je critique pas le fait que la source soit déjà dispo, c'est juste que tu balance un bout de code comme ça Qui n'est absolument pas explicite.
yomm
Messages postés
515
Date d'inscription
dimanche 17 février 2002
Statut
Membre
Dernière intervention
10 mars 2008
2
tu te fiche de moi kalobit .......non sérieux????j'ai dit ke ce source devait exister......mais me balancer que tu as trouvé un meilleur code en me filant mon propre code!!!!!! et oui compare les dates et les commentaires !!!!!!
************************************************
mon source :
Date d'ajout :05/03/2004
extrait du commentaire:
'--------------------------------------------------------
'---La fonction Rechercher : ---
'--- Cette fonction recherche tous les fichiers dans ---
'--- le répertoire spécifié et ses sous-repertoires ---
'--- Elle retourne le nombre d'occurences trouvées ---
'--------------------------------------------------------
************************************************

le post dont tu parles:
Posté par : jojo93 le 29/05/2004 20:55:54
extrait du source dont il parle:
'--------------------------------------------------------
'---La fonction Rechercher : ---
'--- Cette fonction recherche tous les fichiers dans ---
'--- le répertoire spécifié et ses sous-repertoires ---
'--- Elle retourne le nombre d'occurences trouvées ---
'--------------------------------------------------------

CELA RESSEMBLE FORTEMENT A MON CODE TU TROUVES PAS!!!!!!!!!

mais alors comment Jojo93 a fait pour avoir toutes ces déclarations d'API , de constantes etc..........EURECA il a surement du télécharger le fichier ZIP!!!!!!!!!

PS:merci encore pour ton commentaire et surement aussi pour la note qui doit allée avec!!!!!!!!!