Newsgroup: it.comp.lang.visual-basic
Titolo: files in sottodirectory

Come posso sapere quanti (e possibilmente anche quali) files diun qualsiasi
tipo (*.XXX) sono contenuti all'interno di un direttorio e nei suoi
sotto-direttori?
Grazie a chiunque sappia aiutarmi

 direttorio e nei suoi sotto-direttori?
Direttorio... fantastico! non lo sentivo da quando facevo la terza
media :)
Puoi utilizzare l'istruzione Dir all'interno di un ciclo while
Dim CONTA as integer
dim NOMEFILE as string
NOMEFILE = Dir("*.XXX", vbarchive + vbreadonly + vbnormal)
While NOMEFILE <> ""
    CONTA = CONTA + 1
    NOMEFILE = Dir
Wend
alla fine del ciclo la variabile CONTA contiene il numero di files
del (hmmf) direttorio
--
Fibia "Sakamoto" FBI
URL: 
www.geocities.com/fibiafbi
E-Mail: 
fibi...@hotmail.com
ICQ UIN 63586057
Membro #25 delle BT Sez. Sud

Ciao, UT
hai scritto :
Come posso sapere quanti (e possibilmente anche quali) files diun qualsiasi
tipo (*.XXX) sono contenuti all'interno di un direttorio e nei suoi
sotto-direttori?
Fibia "Sakamoto" FBI ti ha dato delle ottime, anche nella forma,
indicazioni.
Ci possono essere alternative ?
Bene, perchè non utilizzi gli oggetti DriveListBox, DirListBox e FileListBox
di VB ?
Se vuoi crearti una funzione, e questa è un'alternativa che ti potrà servire
in tutte le
applicazioni o, meglio in un ocx creato da te, puoi cominciare a considerare
questo
codice che puoi utilizzare da subito perpoi implementarlo
La parte nel Form potrebbe essere questa
(Ovviamente manca tutta la serie di controlli sui valori di Text1 e Text2)
Option Explicit
Private Sub Command1_Click()
    Call vbGetFileList(Text1.Text, Text2.Text, List1)
End Sub
La parte in un modulo deve essere questa :
Option Explicit
' Queste dichiarazioni sono necessarie
Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA"
_
(ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _
(ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long)
As Long
' Queste costanti e tipi anche
Public Const MAX_PATH = 260
Public Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type
Public Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * MAX_PATH
    cAlternate As String * 14
End Type
Public Sub vbGetFileList(fPath As String, fExt As String, lstObject As
ListBox)
    Dim hFile As Long
    Dim WFD As WIN32_FIND_DATA
    If fPath$ > "" Then
        lstObject.Clear
        If Right$(fPath, 1) = "\" Then fPath$ = Mid$(fPath$, 1,
Len(fPath$) - 1)
        hFile = FindFirstFile(fPath & "\*." & fExt, WFD)
            If hFile > 0 Then
                lstObject.AddItem StripNulls(WFD.cFileName)
                While FindNextFile(hFile, WFD)
                    lstObject.AddItem StripNulls(WFD.cFileName)
                Wend
            End If
        FindClose hFile&
    End If
End Sub
Function StripNulls(ByRef startStrg As String) As String
' -----------------------------
'  Prende una stringa separata da chr$(0),
'  ne estrae un elemento, e ACCORCIA la stringa
'  permettento l'estrazione del prossimo.
' -----------------------------
Dim c As Integer
Dim item As String
    c = 1
    Do
        If Mid$(startStrg, c, 1) = Chr$(0) Then
            item = Mid$(startStrg, 1, c - 1)
            startStrg = Mid$(startStrg, c + 1, Len(startStrg))
            StripNulls = item
            Exit Function
        End If
        c = c + 1
    Loop
End Function
-- 
Posted from 
smtp3.libero.it
 [193.70.192.53] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG