PDA

View Full Version : Cercare dei files in una cartella con Visual Basic


Blisset
02-05-2003, 10:32
Qualcuno sa come si può fare per cercare dei files (ad es. *.txt) in una cartella (e nelle sue sottocartelle) con Visual Basic ?
Alla fine dovrei avere un elenco di tutti i file completi però di percorso.
Grazie

roby78
02-05-2003, 10:39
se ho capito bene vuoi avere la classica finestra di windows per cercare i file.
io di solito faccio cosi:

Private Sub mnuapri_Click()
finestrapri.Filter = "File di testo|*.txt|Tutti i file|*.*"
finestrapri.ShowOpen
Open finestrapri.FileName For Input As #1
file = Input(LOF(1), 1)
Text1.Text = file
Close
End Sub


nota che finestrapri è il common dialog control attivabile nei componenti.
io sto cercando di fargli aprire i file di immagini come jpeg o bmp ma non so come fare mi da sempre errori e le guide dicono solo come aprire i file che gia si conoscono senza usare la finestra.
spero di esserti stato utile ciao

matpez
02-05-2003, 12:29
Prova questo progettino :p

Blisset
02-05-2003, 14:50
Originally posted by "matpez"

Prova questo progettino :p

E' perfetto. E' proprio quello che volevo fare.
Non ho capito però come cercare un determinato tipo di file.
Se ad es. voglio cercare solo i file *.jpg, dove devo mettere questo filtro ?

Grazie infinite

matpez
02-05-2003, 16:09
non mi ricordo bene in che parte del codice si trovi...ma prova a ricercare i caratteri "*.*" dovrebbe essere li! :p

Blisset
02-05-2003, 18:41
Originally posted by "matpez"

non mi ricordo bene in che parte del codice si trovi...ma prova a ricercare i caratteri "*.*" dovrebbe essere li! :p

Ah ok, avevo già provato a mettere *.jpg al posto di *.*, ma non spuntava nessun file.

Poi ho capito che era perchè non c'era nessun Jpg nella cartella :D
Grazie

Blisset
02-05-2003, 19:40
Ahh, se metto "*.jpg" al posto di "*.*" non mi trova più le sottocartelle perchè non finiscono con .jpg !

Sai come posso fare per cercare anche nelle sottocartelle CON il filtro ?
Grazie ancora

matpez
02-05-2003, 20:48
Allora fai cosi....prendi il nome del file...e fai cosi:


sStr = "xyzciao.zip"

if Right(sStr, Len(sStr) - InStrRev(sStr, "."))="zip" then
msgbox "ciao!!"
end if

Blisset
02-05-2003, 23:01
Originally posted by "matpez"

Allora fai cosi....prendi il nome del file...e fai cosi:

sStr = "xyzciao.zip"

if Right(sStr, Len(sStr) - InStrRev(sStr, "."))="zip" then
msgbox "ciao!!"
end if

Potresti essere più chiaro per favore ?
Grazie

matpez
03-05-2003, 00:35
quando lui ti trova il file...gli metti quel IF che ti ho dato io e filtri solo le estensioni che ti servono a te

Blisset
03-05-2003, 09:47
Originally posted by "matpez"

quando lui ti trova il file...gli metti quel IF che ti ho dato io e filtri solo le estensioni che ti servono a te

Sì, ma il fatto è che il medesimo filtro è usato oltre che per i files, anche per le cartelle.

Se io metto un filtro ad es. "*.jpg", mi trova solo le sottocartelle che finiscono per .jpg !

Occorre quindi che il programma capisca che quando si trova davanti ad una sottocartella non deve applicare nessun filtro.

matpez
03-05-2003, 11:41
no, ma non devi dare il filtro qui dentro: "*.*" ma quando lui ti sta per inserire il file dentro alla lista...metti quella IF che ti ho dato io cosi se è dell'estensione da te voluta lo fai inserire nella lista altrimenti lo salti. però devi lasciare "*.*" altrimenti non trova tutto!! :p

Blisset
03-05-2003, 12:34
Originally posted by "matpez"

no, ma non devi dare il filtro qui dentro: "*.*" ma quando lui ti sta per inserire il file dentro alla lista...metti quella IF che ti ho dato io cosi se è dell'estensione da te voluta lo fai inserire nella lista altrimenti lo salti. però devi lasciare "*.*" altrimenti non trova tutto!! :p

Ah, già è vero.
Era semplicissimo.
Ok, grazie, adesso funziona a dovere.

C'è un limite al quale il programma si blocca ?

matpez
03-05-2003, 12:53
Io ti consiglio di usare le ricerca API che è molto + veloce...che io sappio non ho mai riscontrato problemi di bloccaggio programma, ho fatto ricerche su tutto C:\ e non mi ha dato problemi.

Ci sono alcuni file però che non riescono a essere letti quelli con nomi strani che crea l'OS per girare. Per cui ti conviene mettere ON ERROR RESUME NEXT cosi almeno all'errore continua saltandoti il file.

Blisset
03-05-2003, 18:29
Originally posted by "matpez"

Io ti consiglio di usare le ricerca API che è molto + veloce...che io sappio non ho mai riscontrato problemi di bloccaggio programma, ho fatto ricerche su tutto C:\ e non mi ha dato problemi.

Ci sono alcuni file però che non riescono a essere letti quelli con nomi strani che crea l'OS per girare. Per cui ti conviene mettere ON ERROR RESUME NEXT cosi almeno all'errore continua saltandoti il file.

Oh, la velocità non è un problema. Anzi, è possibile impostare da codice la priorità del programma a Lower ?
Grazie

matpez
04-05-2003, 01:52
Si prova questo progettino :p