View Full Version : Cercare dei files in una cartella con Visual Basic
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
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
Prova questo progettino :p
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
non mi ricordo bene in che parte del codice si trovi...ma prova a ricercare i caratteri "*.*" dovrebbe essere li! :p
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
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
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
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
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
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.
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
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 ?
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.
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
Si prova questo progettino :p
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.