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

kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005 - 7 mars 2004 à 00:47
cs_Kanjar Messages postés 2 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 18 août 2006 - 18 août 2006 à 13:22
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
18 août 2006 à 13:22
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
5 juil. 2004 à 00:22
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 3
12 juin 2004 à 10:54
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
12 juin 2004 à 10:37
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 3
11 juin 2004 à 17:46
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!!!!!!!!!
kalobit Messages postés 169 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 7 avril 2008 2
11 juin 2004 à 16:30
comme je fais pas les choses à moitié, j'ai retrouver le post dont je parlais :

http://www.vbfrance.com/forum.v2.aspx?ID=235428

qui lui m'a aidé.

+++

ps:Je ne critique pas l'intension qui est tout à fait louable :)))
kalobit Messages postés 169 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 7 avril 2008 2
11 juin 2004 à 16:01
comme je fais pas les choses à moitié, j'ai retrouver le post dont je parlais :

http://www.vbfrance.com/forum.v2.aspx?ID=235428

qui lui m'a aidé.

+++

ps:Je ne critique pas l'intension qui est tout à fait louable :)))
kalobit Messages postés 169 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 7 avril 2008 2
11 juin 2004 à 15:40
franchement pas terrible !!!

Pas de déclaration d'api
pas de déclaration de constante
on sait pas à quoi correspondent les variables
c'est quoi INVALID_HANDLE_VALUE ?????
et ListeFichier, ya pas de déclaration de type ???
les commentaires sont vraiment succints.

En plus je crois avoir déjà vu ce post mais franchement plus clair, avec toutes les déclaration.
déjà ça, ça m'aurrait aidé!!

Là j'avance pas d'un pouce.
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
30 avril 2004 à 12:36
désolé mister mais je ne connais pas ta source , jamais entendu parlé de ce site...par contre je te confirme que ce source provient bien d'un autre code...trouvé sur vbfrance mais je ne me souvients plus lequel....et si tu regardes bien, ce code a été mis en REPONSE a une question posée sur le forum...donc je n'ai fais là que rendre service à quelqu'un qui n'avait pas trouvé ce qu'il cherchait...
cbao06 Messages postés 1 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 30 avril 2004
30 avril 2004 à 08:50
HALTE AU PLAGIAT! LA SOURCE N'EST PAS DE TOI!
C'est bien de faire connaitre les fonctions API par des exemples de code, mais c'est encore mieu de donner l'origine de cette source. Tu as vu juste en te doutant qu'elle existait déjà vu que c'est mot pour mot la source contenue dans le fichier APIDOCVB.CHM qui regroupe plus d'un centaine de fonctions API avec des exemples pour chacune et que l'on peut télécharger gratuitement sur l'URL suivante : http://docvb.free.fr/api.php.
kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005
7 mars 2004 à 00:47
nickel j'allais justement avoir besoin d'un equivalent du FindFirst en C !!

merci a toi ;-)
Rejoignez-nous