begin process at 2010 03 22 02:15:22
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > LISTE DE FICHIERS SUR UN DISQUE EN VB6

LISTE DE FICHIERS SUR UN DISQUE EN VB6


 Information sur la source

Note :
Aucune note
Catégorie :Fichier / Disque Classé sous :algorithme, tri, liste, vb6, arborescence Niveau :Initié Date de création :03/04/2008 Date de mise à jour :04/04/2008 09:52:50 Vu / téléchargé :6 088 / 442

Auteur : CFCTABLE

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Ce programme permet de lister une arborescence de répertoires et de fichiers.
Le résultat est  mis dans un fichier texte de votre choix.

Un fichier "\fichiersOuRepertoiresNonLus.txt" liste les erreurs d'accès
(droits d'accès ou fichier ouvert par autre appli ou erreur disque à cet endroit)
Il est  dans le répertoire où est installé le programme.

La fonction de listage et les fonctions de tri utilisent pas mal d'accès disque.. il est donc préférable d

'installer le programme sur un disque dur et non sur une clé USB (ca peut être 10 fois plus long)

Le programme de tri peut être utilisé à d' autres fins Sa vitesse est en "NLog(N)" et dépend de la vitesse du

disque dur ou du média utilisé. Il peut nécessiter jusque à 4 fois le volume mémoire du fichier à trier.
En gros, on trie des ensembles déja ordonnés. Au début par 2, puis par 4 puis par ..2^n>= nb de lignes à
trier.J'appelle cela un 'tri Binaire .." Mais assez efficace.

C'est juste pour le fun et plaisir de programmer en VB car même le vieux MSDOS est efficace sur le sujet.

        dir c:\rep_toto /s/w/ah/ar/aa/b >d:\tmplst.txt par exemple! Mais ça ne dit pas comment c'est fait!

Source

  • Public Sub FileSearch(xPath, XFile, xFichierSortie, xTypesDeFichiersRecherches As Byte)
  • Dim ww As String
  • Dim xx, yy, zz, FichierErreurs As Integer
  • Dim NbErreurs As Long
  • Dim w, wx As String
  • Dim Test As Boolean
  • Dim Entree1, Entree2 As String
  • Entree1 = App.Path & "\tmp1.txt"
  • Entree2 = App.Path & "\tmp2.txt"
  • FichierErreurs = FreeFile: Open App.Path & "\fichiersOuRepertoiresNonLus.txt" For Output As
  • FichierErreurs
  • zz = FreeFile: Open xFichierSortie For Output As zz
  • Test = False
  • xx = FreeFile
  • Open Entree1 For Output As xx
  • w = ""
  • On Error GoTo TERR
  • w = Dir(xPath & "*.*", xTypesDeFichiersRecherches)
  • On Error GoTo 0
  • While w <> ""
  • If w <> ".." And w <> "." Then
  • w = xPath & w
  • If IsFile(w) Then
  • Print #zz, w
  • Else
  • Print #xx, w
  • Test = True
  • End If
  • End If
  • w = Dir
  • Wend
  • Close xx
  • While Test
  • xx = FreeFile: Open Entree1 For Input As xx
  • yy = FreeFile: Open Entree2 For Output As yy
  • Test = False
  • While Not EOF(xx)
  • Line Input #xx, w
  • Print #zz, w & "\"
  • ww = ""
  • On Error GoTo TERR
  • ww = Trim(Dir(w & "\*.*", xTypesDeFichiersRecherches))
  • On Error GoTo 0
  • While ww <> ""
  • If ww <> ".." And ww <> "." Then
  • ww = w & "\" & ww
  • If IsFile(ww) Then
  • Print #zz, ww
  • LblInfo = w
  • DoEvents
  • Else
  • Print #yy, ww
  • Test = True
  • End If
  • End If
  • ww = Trim(Dir)
  • Wend
  • Wend
  • wz = Entree1: Entree1 = Entree2: Entree2 = wz
  • Close xx
  • Close yy
  • Wend
  • Close zz
  • If ExistFile(Entree1) Then Kill Entree1
  • If ExistFile(Entree2) Then Kill Entree2
  • Me.SetFocus
  • ww = " Liste disponible dans : " & RésultatTxt.Text
  • ww = ww & vbCrLf
  • ww = ww & vbCrLf & " Fichiers ou répertoires inaccessibles = " & NbErreurs
  • ww = ww & vbCrLf & " Voir le fichier " & App.Path & "\fichiersOuRepertoiresNonLus.txt"
  • ww = ww & vbCrLf
  • LblInfo.Caption = ww
  • Close #FichierErreurs
  • Exit Sub
  • TERR:
  • Print #FichierErreurs, Err.Number, "| " & w & " |"
  • NbErreurs = NbErreurs + 1
  • Resume Next
  • End Sub
Public Sub FileSearch(xPath, XFile, xFichierSortie, xTypesDeFichiersRecherches As Byte)
    Dim ww As String
    Dim xx, yy, zz, FichierErreurs As Integer
    Dim NbErreurs As Long
    Dim w, wx As String
    Dim Test As Boolean
    Dim Entree1, Entree2 As String
    
    Entree1 = App.Path & "\tmp1.txt"
    Entree2 = App.Path & "\tmp2.txt"
    
    FichierErreurs = FreeFile:  Open App.Path & "\fichiersOuRepertoiresNonLus.txt" For Output As 

FichierErreurs
    
    zz = FreeFile: Open xFichierSortie For Output As zz
    Test = False
    xx = FreeFile
    Open Entree1 For Output As xx
        w = ""
        On Error GoTo TERR
        w = Dir(xPath & "*.*", xTypesDeFichiersRecherches)
        On Error GoTo 0
        While w <> ""
            If w <> ".." And w <> "." Then
                w = xPath & w
                If IsFile(w) Then
                    Print #zz, w
                Else
                    Print #xx, w
                    Test = True
                End If
            End If
            w = Dir
        Wend
    Close xx
    
    While Test
        xx = FreeFile: Open Entree1 For Input As xx
        yy = FreeFile: Open Entree2 For Output As yy
        Test = False
        While Not EOF(xx)
            Line Input #xx, w
            Print #zz, w & "\"
            ww = ""
            On Error GoTo TERR
            ww = Trim(Dir(w & "\*.*", xTypesDeFichiersRecherches))
            On Error GoTo 0
            While ww <> ""
                If ww <> ".." And ww <> "." Then
                    ww = w & "\" & ww
                    If IsFile(ww) Then
                        Print #zz, ww
                        LblInfo = w
                        DoEvents
                    Else
                        Print #yy, ww
                        Test = True
                    End If
                End If
                ww = Trim(Dir)
            Wend
        Wend
        wz = Entree1: Entree1 = Entree2: Entree2 = wz
        Close xx
        Close yy
    Wend
    Close zz
    If ExistFile(Entree1) Then Kill Entree1
    If ExistFile(Entree2) Then Kill Entree2
    Me.SetFocus
    ww = " Liste disponible dans : " & RésultatTxt.Text
    ww = ww & vbCrLf
    ww = ww & vbCrLf & "  Fichiers ou répertoires inaccessibles = " & NbErreurs
    ww = ww & vbCrLf & "  Voir le fichier " & App.Path & "\fichiersOuRepertoiresNonLus.txt"
    ww = ww & vbCrLf
    LblInfo.Caption = ww
    Close #FichierErreurs
    Exit Sub
TERR:
    Print #FichierErreurs, Err.Number, "| " & w & " |"
    NbErreurs = NbErreurs + 1
    Resume Next
End Sub


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

04 avril 2008 09:52:50 :
Modification open #1 par FichierErreurs = FreeFile Paramétage de la fonction par xTypesDeFichiersRecherches (=vbDirectory Or vbSystem Or vbHidden)

 Sources du même auteur

Source avec Zip EQUATIONS DU TROISIÈME DEGRÉ
Source avec Zip CALCUL DE LA FONCTION LOGARITHME

 Sources de la même categorie

Source avec Zip Source avec une capture TRAITEMENT DES NOMS DE FICHIERS. par artgile
Source avec Zip Source .NET (Dotnet) GESTION DE PARC AUTOMOBILE AVEC SÉRIALISATION par guyr07
Source avec Zip Source avec une capture Source .NET (Dotnet) FICHIERS_CACHÉS_LECTURE_SEULE par Le Pivert
Source avec Zip Source avec une capture CHANGEUR D'ICONES par djgab21
Source .NET (Dotnet) DIRECTDISKACCESS par XelectroX

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture TRI PAR INSERTION par jmc70
Source avec Zip Source avec une capture Source .NET (Dotnet) GESTION COMPLÈTE DE ZIP - ZIPDEZIP par zozo14
Source avec Zip Source avec une capture GESTION DE LISTES (FUSION, COMPARAISON, TRI...) par Renfield
[VBSCRIPT] LISTE DES FICHIERS, D'UN RÉPERTOIRE, TRIÉS PAR DA... par JMO
Source avec Zip Source avec une capture TRADUCTEUR VB6.VBP EN VB5.VBP par joro

Commentaires et avis

Commentaire de jack le 04/04/2008 01:28:37 administrateur CS

Salut
Ce qui m'étonne, c'est que la liste des fichiers ne soient pas déjà dans l'ordre alphabétique lors de l'acquisition - pas fait l'essai.

Conseil pour la clarté du code :
Dir(w & "\*.*", 22) ---> Dir(w & "\*.*", vbDirectory Or vbSystem Or vbHidden)
(bizarre comme choix)
Chr$(13) & Chr$(10) ---> vbCrLf

+ Close #1 ---> A revoir : aucun fichier n'a été ouvert avec ce numéro.
Coup de bol si xx, yy ou zz correspondent = futur bug

Commentaire de Renfield le 04/04/2008 06:51:14 administrateur CS

me semble pas que Dir trie quoi que ce soit, effectivement...

ben si:
Open App.Path & "\fichiersOuRepertoiresNonLus.txt" For Output As #1

justement, je trouve pas forcément top ce canal en dur... alors qu'après tu passes par FreeFile...
tu dépose une fonction, donc exportable, réutilisable... d'autres programme qui integreront ta fonction auront peut etre déjà un #1 ouvert, et là.... boum!

plutot que de passer (jongler, dans le cas présent)par des fichiers temporaires.
Jack ici présent et moi même avons fais des "Dir récursif" qui aident à ce niveau...

http://www.vbfrance.com/code.aspx?ID=37859
et
http://www.vbfrance.com/code.aspx?ID=43640

Commentaire de CFCTABLE le 04/04/2008 09:57:40

A l'origine ce programme était écrit en QuickBasic et la mémoire vive était chère c'est pour cela que je n'avais pas utilisé de fonctions trop élaborées.
Les fonctions de tri sont dans le module HTSortMod.C'est pareil, les cannaux d'ouverture de fichier étaient en dur et je les ai laissés tels quels.
Pour Dir(w & "\*.*", 22) ---> Dir(w & "\*.*", vbDirectory Or vbSystem Or vbHidden), j'ai mis 22 en dur pour ne pas effectuer le calcul à chaque passage! mais effectivement JACK, ton idée est bonne , je vais  mettre cette valeur dans une variable ce qui permettra de paramétrer la recherche.
Quand au choix des valeurs a été fait pour avoir tous les fichiers.
Pour le open #1 je l'ai juste rajouté vite fait pour fournir une liste de fichiers non traités!. Comme j'ai un peu de temps, je modifie le code et refait un Post.
Voila c'est fait.
Merci pour vos commentaires.

Commentaire de Renfield le 04/04/2008 10:24:47 administrateur CS

"j'ai mis 22 en dur pour ne pas effectuer le calcul à chaque passage"
calculé une fois, a la compilation...

Commentaire de PaTaTe le 04/04/2008 13:10:24

Pour ma part je trouve que ce code manque de clarté. Essais de mettre des noms de variables cohérentes avec ce qu'elle sont supposées contenir. Evites les variables sans type :

Public Sub FileSearch(xPath, XFile, xFichierSortie, xTypesDeFichiersRecherches As Byte)

3 dans la première ligne déjà

Commentaire de bintou123 le 14/04/2008 14:37:06

je trouve ce code bon mais trop opaque pour bien comprendre ajoute les commentaires
merci!

Commentaire de CFCTABLE le 14/04/2008 15:53:54

:) oui je suis bien d'accord.. et c'est pour cela que je suis en train de reprendre le code , en particulier celui du tri, je remettrais des commentaires  et des explications ..

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Comment faire un tri alphabetique d'une liste de nom? [ par Cerber ] Je desire trier une liste de nom par ordre alphabetique.Le programme prend pour l'instant des données dans une page excel et crée une page html ou il Tri colonne liste view [ par tom42 ] Je possede une liste view avec une colonne date.Quand je clic sur le titre de la colonne pour trier par date corissante le trie se fait dabord sur le pb de code dans listbox pl colonnes [ par PDT ] Set db = OpenDatabase("base.mdb")reqlist = "select champ1, champ2 from table where (champ3 = 1)"Set tri = db.OpenRecordset(reqlist)If tri.RecordCount liste déroulante en vb6 [ par fgadenne ] je voudrais savoir si il existe un control vb6 qui me permette d'auto renseigner une liste déroulante avec un champ d'une table accessmerci d'avance Tri et recherche avec le contrôle ADO en VB6 [ par zakay ] Comment effectuer un tri et une recherche avec le contrôle ADO en Visual Basic 6 tri de la liste dans datacombo [ par polob ] je souhaiterai savoir s'il est possible de trier alphabetiquement les données de la liste d'un data combo Merci d'avance VB6 DbCombo [ par phinebacker ] Comment peut on pré-positionner par défaut une dbcombo sur un élément de la liste.Avec une combo simple on utilise listindex (de memoire) mais avec la tri dans un tri.... [ par rocknroll2 ] Bonsoir à tous,Je reviens vers vous pour, évidement, un autre problème insoluble pour mes faibles connaissance en VB6!J'ai 02 colonnes de nombres.Je d Comment trier une liste déroulante créée dans la barre d'outils [ par cutkilleuse ] salut tout le monde,J'ai un gros soucis concernant les tris!!! ='(A partir d'un formulaire j'ai un bouton qui me permet de créer mes propres requetes, Tri suivant deux zone de liste modifiable [ par lestat5 ] Bonjour,Je possède un formulaire avec trois zones de liste modifiable.Je choisit un element dans la première, j'obtiens les choix correspondant dans l


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales