sabato 9 giugno 2007

Vb6 - Ricerca dei files con la funzione Dir

Ho visto che tra i Vb6isti, alcuni non hanno ancora dimestichezza con la funzione Dir per fare la ricerca ricorsiva dei files presenti in una cartella e in tutte le sue sottocartelle.

Ovviamente se non si vuole la ricerca ricorsiva è sufficiente fare una piccola modifichina al programma.

Il modulo, scaricabile a questo indirizzo genera una listview e può scrivere un file di testo con i dati estratti.

La funzione principale è determinata dal blocco:

Sub CercaFile(ByVal NomeDir As String, ByVal NomeFile As String)
Dim FileFound As String
Dim PathNames() As String
Dim FileNames() As String
Dim k As Integer
Dim li As ListItem
k
= -1
If Right$(NomeDir, 1) <> "\" Then NomeDir = NomeDir & "\"
FileFound
= Dir$(NomeDir & NomeFile)
Do While FileFound <> ""
If FileFound <> "." And FileFound <> ".." Then
k
= k + 1
ReDim Preserve FileNames(k)
FileNames(k)
= FileFound
Print #file, NomeDir + FileFound
End If
FileFound
= Dir$
Loop
If k <> -1 Then
For k = 0 To UBound(FileNames)
iRighe
= iRighe + 1
Set li = ListView1.ListItems.Add(, , Format(iRighe, "00000")) ' righe
li.SubItems(1) = NomeDir
li.SubItems(
2) = FileNames(k)
Next
End If
k
= -1
FileFound
= Dir(NomeDir, vbDirectory)
Do While FileFound <> ""
If FileFound <> "." And FileFound <> ".." Then
If (GetAttr(NomeDir & FileFound) And vbDirectory) = vbDirectory Then
k
= k + 1
ReDim Preserve PathNames(k)
PathNames(k)
= FileFound
End If
End If
FileFound
= Dir
Loop
If k = -1 Then Exit Sub
For k = 0 To UBound(PathNames)
CercaFile NomeDir
& PathNames(k), NomeFile
Next
End Sub

Come si può vedere vengono ricercati prima i file singoli e poi le sottocartelle, per ciascuna delle quali è richiamata ricorsivamente la stessa funzione fino ad esaurimento delle directory / sottodirectory.

2 commenti:

Anonimo ha detto...

molto intiresno, grazie

Anonimo ha detto...

leggere l'intero blog, pretty good