Newsgroup: it.comp.lang.visual-basic
Titolo: Ricerca File in tutte le partizioni

Salve ragazzi,
scusatemi se x caso gia' esiste un post del genere e non l'ho letto ma sono
nuovo in questo ng.
Come da oggetto vorrei sapere come e' possibile ricercare un file, es
nightiger.txt, in tutti gli hd e in tutte le partizioni presenti nel pc
dell'utente.
Grazie e salutoni
NighTiger


Prima di tutto devi scoprire tutte le partizioni dell' HD e le loro
iniziali.
Un modo semplice per fare questo č quello di instanziare sulla form un
controllo DriveListBox. Infatti con un DriveListBox bastano queste poche
righe per conoscere tutte le partizioni:
Dim Ndrive As Integer
For Ndrive = 0 To Drive1.ListCount - 1
        msgbox mid(drive1.list(ndrive),1,2)
Next Ndrive
Una volta scoperto le partizioni non ti resta che analizzarle una ad una per
cercare il file che vuoi. Non č difficile anche se č un po' lunghetto da
fare... Cmq scrissi una routine per trovare un percorso avendo il nome di un
file che ti allego qui sotto.
Quindi il nostro primo cicletto diventerebbe:
Dim Ndrive As Integer
Dim Percorso as string
For Ndrive = 0 To Drive1.ListCount - 1
        percorso=trovapercorso(mid(drive1.list(ndrive),1,2) &
"/","nightiger.txt")
        if percorso<>"" then exit for
Next Ndrive
if percorso<>"" then
    msgbox percorso
else
    msgbox "non trovato"
end if
Public Function TrovaPercorso(Directory As String, File As String) As String
Dim pstrDirectory() As String, pstrAgg As String
Dim pstrPercorso As String, pstrNome As String
Dim plngNumDir As Long, plngCont As Long
'Sistema le eventuali imperfezione nei percorsi
If Right(Directory, 1) <> "\" Then Directory = Directory & "\"
'Inizializza le variabili
pstrPercorso = Directory
'Corpo della routine
Scannerizza:
If Right(pstrPercorso, 1) <> "\" Then pstrPercorso = pstrPercorso & "\"
pstrNome = Dir(pstrPercorso, vbDirectory)
Do While pstrNome <> ""
     If pstrNome <> "." And pstrNome <> ".." Then
        If (GetAttr(pstrPercorso & pstrNome) And vbDirectory) = vbDirectory
Then
         plngNumDir = plngNumDir + 1
         ReDim Preserve pstrDirectory(plngNumDir)
         pstrDirectory(plngNumDir) = pstrAgg & pstrNome
        Else
            If pstrNome = File Then
                TrovaPercorso = pstrAgg
                Exit Function
            End If
        End If
   End If
   pstrNome = Dir
Loop
'Esamina le sotto-directory
If plngCont < plngNumDir Then
    plngCont = plngCont + 1
    pstrPercorso = Directory & pstrDirectory(plngCont)
    pstrAgg = pstrDirectory(plngCont) & "\"
    GoTo Scannerizza
End If
End Function
NB Puň darsi che ti dia degli errori perchč non ho testato il tutto.
Dovrebbero essere errori facilmenti risolvibil1 (ad esempio l' analisi del
drive a: senza nessun dischetto inserito)... Cmq se ti insabbi contattami
senza esitazioni :-)
Ciao
Daniele
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------------------------------------

 senza esitazioni :-)
Grazie infinite... soprattutto per la tua disponibilita'
NighTiger

[...]
Se vuoi nel sito comune c'è una routine che lavora anche con le wildchars e ti restituisce tutti
i files corrispondenti a queste  contenuti in un determinato percorso. Puoi anche specificare se
vuoi subuto tutti i files trovati e se ti basta il primo (eventualmente poi chiedi di aver il
successivo e poi quello dopo ancora come le Dir di VB).
Il progetto si chiama AllDir.
Ciao
    Diego