Come cercare file e cartelle con Delphi

Quando si cercano file, è spesso utile e necessario cercare nelle sottocartelle. Qui, scopri come utilizzare la forza di Delphi per creare un progetto di file di ricerca semplice, ma potente, che trovi tutti.

Progetto di ricerca maschera file / cartella

Il seguente progetto non solo consente di cercare file attraverso le sottocartelle, ma consente anche di determinare facilmente gli attributi dei file, come Nome, Dimensione, Data di modifica, ecc. In modo da poter vedere quando richiamare la finestra di dialogo Proprietà file da Esplora risorse. In particolare, mostra come cercare ricorsivamente tra le sottocartelle e assemblare un elenco di file che corrispondono a una determinata maschera di file. La tecnica di ricorsione è definita come una routine che si chiama nel mezzo del suo codice.

Per comprendere il codice nel progetto, dobbiamo familiarizzare con i tre metodi seguenti definiti nell'unità SysUtils: FindFirst, FindNext e FindClose.

FindFirst

FindFirst è la chiamata di inizializzazione per avviare una procedura dettagliata di ricerca dei file utilizzando le chiamate API di Windows. La ricerca cerca i file che corrispondono all'identificatore del percorso. Il percorso di solito include caratteri jolly (* e?). Il parametro Attr contiene combinazioni di attributi di file per controllare la ricerca. Le costanti degli attributi di file riconosciute in Attr sono: faAnyFile (qualsiasi file), faDirectory (directory), faReadOnly (leggi solo file), faHidden (file nascosti), faArchive (file di archivio), faSysFile (file di sistema) e faVolumeID (file ID volume).

Se FindFirst trova uno o più file corrispondenti, restituisce 0 (o un codice di errore per errore, in genere 18) e compila il Rec con le informazioni sul primo file corrispondente. Per continuare la ricerca, dobbiamo usare lo stesso record TSearcRec e passarlo alla funzione FindNext. Al termine della ricerca, è necessario chiamare la procedura FindClose per liberare risorse interne di Windows. TSearchRec è un record definito come:

Quando viene trovato il primo file, il parametro Rec viene riempito e i seguenti campi (valori) possono essere utilizzati dal progetto.
. attr, gli attributi del file come descritto sopra.
. Nome contiene una stringa che rappresenta un nome file, senza informazioni sul percorso
. Taglia in byte del file trovato.
. Tempo memorizza la data e l'ora di modifica del file come data del file.
. FindData contiene informazioni aggiuntive come l'ora di creazione del file, l'ora dell'ultimo accesso e i nomi di file lunghi e brevi.

Trova il prossimo

La funzione TrovaSuccessivo è il secondo passo nella procedura dettagliata di ricerca dei file. Devi passare lo stesso record di ricerca (Rec) che è stato creato dalla chiamata a FindFirst. Il valore restituito da FindNext è zero per esito positivo o un codice di errore per qualsiasi errore.

FindClose

Questa procedura è la chiamata di terminazione richiesta per FindFirst / FindNext.

Maschera di file ricorsiva corrispondente Ricerca in Delphi

Questo è il progetto "Ricerca di file" come appare in fase di esecuzione. I componenti più importanti nel modulo sono due caselle di modifica, una casella di riepilogo, una casella di controllo e un pulsante. Le caselle di modifica vengono utilizzate per specificare il percorso in cui si desidera cercare e una maschera di file. I file trovati vengono visualizzati nella casella Elenco e se la casella di controllo è selezionata, tutte le sottocartelle vengono scansionate alla ricerca di file corrispondenti.

Di seguito è riportato il piccolo frammento di codice del progetto, solo per dimostrare che la ricerca di file con Delphi è la più semplice possibile: