Delphi – Pretraživanje fajlova

Za pretraživanje fajlova određenog naziva fajla (kao na primer „C:WINDOWS*.INI“), možemo iskoristiti funkcije FindFirst i FindNext i proceduru FindClose. Da bi mogli da koristimo ove funkcije koristićemo tip zapisa (record) TSearchRec koji između ostalog sadrži i informacije o fajlu potrebne za pretraživanje. U sledećoj strukturi zapisa TSearchRec, možete videti koje informacije nosi ovaj zapis, i koje su potrebne funkcijama FindFirst i FindNext. Najvažniji podatak je Name (naziv fajla – string) koji sadrži dugačko ime fajla, bez putanje do fajla.


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

Podatak Time predstavlja informaciju o DOS sistemskom vremenu, poslednje modifikacije fajla. Možete konvertovati ovu vrednost u tip podatka TDateTime koristeći funkciju FileDateToDateTime.

Za samo pretraživanje iskoristićemo sledeći programski kod:


var
SearchRec: TSearchRec;
begin
if FindFirst(‘C:WINDOWS*.INI’,
attributes, SearchRec) = 0 then
begin
repeat
// Ovde obradjujemo svaki pronadjeni fajl.
// Informacije o svakom fajlu
// nalaze se u zapisu SearchRec.
until FindNext(SearchRec) 0;
FindClose(SearchRec);
end;
end;

Ukoliko funkcija FindFirst vrati nulu (0), to znači da je pronađen najmanje jedan fajl koji zadovoljava postavljeni kriterijum. Potom koristimo funkciju FindNext da bi dobili informacije o sledećim fajlovima koji takođe zadovoljavaju postavljeni kriterijum. Ova funkcija takođe vraća nulu ukoliko pronađe sledeći fajl. Kada pređemo sve fajlove u jednom folderu, potrebno je da zatvorimo pretraživanje pozivom procedure FindClose, kojom oslobađamo rezervisane resurse zapisa koje smo alocirali funkcijom FindFirst. Ukoliko je atribut nula (0), funkcije FindFirst i FindNext će pretraživati samo „normalne“ fajlove, a ne i one koji su obeleženi kao: Archive, Read-only, Hidden, System, Directory, Volume.

Pratite Krstaricu na www.krstarica.com