Balayage total des dossiers avec l'api win32 (sans dir ni ocx)

Soyez le premier à donner votre avis sur cette source.

Vue 4 113 fois - Téléchargée 539 fois

Description

Salut à tous,

Voici un petit exemple qui montre comment balayer la totalité du contenu d'un dossier ou d'un lecteur, sans utiliser la commande 'Dir' (native à VB) ni d'OCX ou autres librairies additionnelles.

La commande DIR est pratique mais relativement lente (Surtout si l'on scan un disque complet). J'ai été confronté au problème, alors j'ai cherché un moyen d'accèlèrer tous ça. Pour donner un ordre d'idée la routine présente dans le ZIP est 4 à 10 fois plus rapide, selon la machine utilisée...

Bien entendu on pourrait optimiser tous ça en supprimant l'affichage des infos en temp réel. Je pense que certains d'entre vous ne manqueront pas d'y apporter des améliorations... J'ai essayé de mettre un maximum de commentaires pour ceux qui débutent (on y est tous passés... :)))

Voilà, amusez-vous bien et bon code à tous !!!

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

statopulos01
Messages postés
18
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
1 août 2007
-
Bhen moi je trouve qu'elle déchire bien cette source, merci Mr Base! :)
cs_mati
Messages postés
2
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
5 juin 2003
-
Je pense que tu pourras m'aider car je debute.
Je voudrais savoir si un fichier est présent sur le disque en le cherchant que par son nom, pour connaitre ensuite son chemin d'acces.
Merci
cs_Base
Messages postés
70
Date d'inscription
jeudi 23 janvier 2003
Statut
Membre
Dernière intervention
31 juillet 2003
-
Tu as entièrement raison. A l'origine, j'ai fais cette routine pour générer un fichier d'index. C'est pour ça que j'ai préférer alimenter une chaine plutot que le fichier au fur et à mesure, c'est plus rapide. La chaine était sauvée en une seul fois à la fin. Il est vrai que dans le cas de cet exemple, la chaine ne sert à rien. Finement observé ;-)
Proger
Messages postés
248
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
19 décembre 2008
-
Je constate que c'est 30% plus rapide que Dir(). Néanmoins, c'est 30% plus rapide lorsque on apporte quelques modifs à ton code, dont SURTOUT :
stDCBuffer = stDCBuffer & String(Generation, Chr(9)) & CurFileName & vbNewLine
A supprimer!!! sa ralenti énooooooormément les perfs (de 240 secondes, je passe à 7 secondes...).

Dans ces 30% on a également la taille, l'attribut et la date de chaque fichier, ce que Dir() ne fais pas en "natif".

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.