Con estas dos funciones (FindFirst y FindNext) podremos recorrer una carpeta y buscar ficheros según sus atributos y según un filtro dado (comodines).

La función FindFirst, con la siguiente sintaxis: FindFirst(carpeta+filtro, tipo_fichero, TSearchRec) devolverá TRUE si encuentra algún fichero con el filtro indicado y el tipo de fichero (atributos) indicado, devolverá en el componente TSearchRec los datos del fichero encontrado.

La función FindNext, con la sintaxis: FindNext(TSearchRec) devolverá la siguiente coincidencia del componente TSearchRec pasado como parámetro, devolverá el siguiente fichero que cumpla la condición de búsqueda establecida en FindFirst. Cuando no encuentre más resultados devolverá 0.

La función FindClose, con la sintaxis: FindClose(TSearchRec) libera la memoria asignada por FindFirst en el TSearchRec.

El tipo TSearchRec define la información obtenida por FindFirst ó FindNext. Este tipo pertenece la la unidad SysUtils y su declaración es la siguiente:

TSearchRec = record
Time: Integer;
Size: Integer;
Attr: Integer;
Name: TFileName;
ExcludeAttr: Integer;
FindHandle: THandle;
FindData: TWin32FindData;
end;

donde Attr equivale al atributo, cuyo valor entero equivale a los siguientes atributos:

faReadOnly $00000001 Read-only files
faHidden $00000002 Hidden files
faSysFile $00000004 System files
faVolumeID $00000008 Volume ID files
faDirectory $00000010 Directory files
faArchive $00000020 Archive files
faAnyFile $0000003F Any file

Un ejemplo de uso de estas funciones y del tipo TSearchRec:

Este ejemplo se puede utilizar para realizar una copia de una carpeta y todas sus subcarpetas en otra.