Newsgroup: it.comp.lang.visual-basic
Titolo: Dir ricorsiva

Ciao a tutti,
    chi č cosě gentile che mi posta una procedura funzionante per elencare
tutti i file presenti in un path? Compresi quelli delle sottodirectory. Sul
sito comune ho trovato 2 esempi... In uno si usano gli ocx Drive e list e
nell'altra se tolgo la procedura dall'esempio non funziona + nulla...
Basta anche qualcosa di esempio poi me la creo da solo.
P.S sapete se in ASP (a me serve sia x VB6 che ASP) funziona? e se si,
conoscete anche un ocx (anche da scaricare) che simuli una TreeView su IE6?
Grazie

 tutti i file presenti in un path? Compresi quelli delle sottodirectory...
Io uso, da tempo, questa routine derivata da un' idea di un certo Maged
Said:
ho alquanto modificato il codice originale per adattarlo alle mie
esigenze.
Ciao, prova e speriamo che vada bene anche per te.
Franco
Public Function FindFiles(ByVal FolderSpec$, ByVal SearchStr$, ByRef
FileList$(), _
    Optional ByRef FileCount&, Optional ByRef DirCount&, Optional ByRef
SizeOfFiles#, _
    Optional ByVal bAncheSC As Boolean = True) As Boolean
'
'   Ritorna nel vettore FileList$(1 To FileCount) tutti i files
'   di tipo SearchStr$ contenuti in FolderSpec$ ed (eventualmente)
'   nelle sue sottocartelle.
'   FindFiles ritorna True se FileCount > 0.
'
'   Parametri:
'    FolderSpec$:   folder da esplorare.
'    SearchStr$:    stringa di ricerca dei files (e.g. "*.*", "*.bmp",
...).
'    FileList$():   vettore contenente i nomi (completi di path) dei
files trovati.
'    FileCount:     numero di files trovati.
'    DirCount:      numero di folders (e di sottocartelle) contenuti in
FolderSpec$
'                   (valido solo se bAncheSC = True).
'    SizeOfFiles:   ritorna con la somma delle lunghezze in [Bytes] dei
files trovati.
'    bAncheSC:      se True ricerca, ricorsivamente, anche i files
contenuti
'                   nelle sottocartelle di FolderSpec$.
'
'   Nota: le variabili FileCount, DirCount, SizeOfFiles ed il vettore
'         FileList$() non vengono azzerati chiamando questa routine.
'         Questo permette, con chiamate successive, di raccogliere in
'         FileList$() i files di diversi folders.
'
'   Warning:    All rights reserved to Maged Said Abdel Latif
'   E-Mail:     
maged...@hotmail.com
'
'   Nota: la routine originale di Maged Said e' stata modificata.
'
    Dim I&, nDir&
    Dim FileName$, DirName$, dirNames$()
'
    On Error GoTo sysFileERR
'
    If Right$(FolderSpec$, 1) <> "\" Then FolderSpec$ = FolderSpec$ &
"\"
'
    ' Trova tutti i files di tipo SearchStr$ contenuti direttamente in
FolderSpec$:
    FileName$ = Dir(FolderSpec$ & SearchStr, _
                    vbNormal Or vbHidden Or vbSystem Or vbReadOnly)
    While (Len(FileName$) <> 0)
        If (FileName$ <> "?") Then
            SizeOfFiles = SizeOfFiles + CDbl(FileLen(FolderSpec$ &
FileName$))
            FileCount = FileCount + 1
            ReDim Preserve FileList$(1 To FileCount)
            FileList$(FileCount) = FolderSpec$ & FileName$
        End If
'
        FileName$ = Dir()
    Wend
'
    If bAncheSC Then
        ' Trova tutti i folders contenuti direttamente in FolderSpec$:
        nDir = 0
        DirName$ = Dir(FolderSpec$, vbDirectory Or vbHidden Or vbSystem)
        Do While Len(DirName$) <> 0
            If (DirName$ <> ".") And (DirName$ <> "..") And (DirName$ <>
"?") Then
                If GetAttr(FolderSpec$ & DirName$) And vbDirectory Then
                    nDir = nDir + 1
                    ReDim Preserve dirNames$(1 To nDir)
                    dirNames$(nDir) = DirName$
                    DirCount = DirCount + 1
                End If
'
sysFileERRCont:
            End If
'
            DirName$ = Dir()
        Loop
'
        ' Se FolderSpec$ contiene dei folders richiama, ricorsivamente,
        ' questa routine per ogni folder trovato:
        For I = 1 To nDir
            Call FindFiles(FolderSpec$ & dirNames$(I), SearchStr$,
FileList$(), _
                           FileCount, DirCount, SizeOfFiles)
        Next I
    End If
'
    FindFiles = (FileCount > 0)
'
AbortFunction:
    Exit Function
'
sysFileERR:
    If Right$(DirName$, 4) = ".sys" Then
        Resume sysFileERRCont
    Else
        MsgBox "Error: " & Err.Number & " - " & Err.Description,
vbCritical, _
        "Unexpected Error in FindFiles"
        Resume AbortFunction
    End If
'
'
'
End Function