Tehnika Krstarice > Programiranje > Delphi - Pretraživanje fajlova

Delphi - Pretraživanje fajlova

31.12.2000.

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.

Preporučite ovaj članak

Članak još uvek nije ocenjen.