Căutarea fișierelor în Delphi

Găsirea fișierelor în Delphi vă va ajuta să găsiți fișiere care se potrivesc cu criteriile alese de programator - nume, dimensiune, data creării etc. Căutarea fișierelor poate fi făcută atât pe întregul disc selectat, cât și limitată la un director separat. Căutarea fișierelor în Delphi se efectuează în trei etape.
  1. Mai întâi, există primul fișier care satisface masca specificată. Această căutare este efectuată utilizând funcția
    funcția FindFirst (const Path: String; Attr: Integer; var F: TSearchRec): Integer;

Parametrul Attr conține un set de atribute care pot fi luate în considerare la selectarea fișierelor:

  • faReadOnly = $ 01 - fișier numai pentru citire;
  • faHidden = $ 02 - fișier ascuns;
  • faSysFile = $ 04 - fișier de sistem;
  • faVolumeID = $ 08 - eticheta discului;
  • faDirectory = $ 10 - director (director);
  • faArchive = $ 20 - fișier arhivă;
  • faAnyFile = $ 3F este un fișier arbitrar.

Numele acestor atribute pot avea nume diferite în diferite sisteme. Este un avertisment pe care Delphi îl oferă atunci când încearcă să folosească aceste nume. Prin urmare, este mai bine să nu folosiți nume, ci valori. Cu toate acestea, atunci există neponyatki: încercați să ghici mai târziu ce este de $ 02 sau $ 08. Prin urmare, trebuie să introduceți constante cu valorile corespunzătoare și nu va exista probleme.

Aceste atribute au valoarea biților individuali în rezultatul Attr. Pentru a atribui un set de atribute fișierului dorit, pur și simplu trebuie să le însumezi:
Attr: = faReadOnly + faSysFile + faHidden;
Un astfel de set de atribute va determina funcția să caute numai fișiere de sistem ascunse cu o caracteristică "numai pentru citire".

Rezultatul căutării este conținut în variabila F. având tipul TSearchRec:
tip TSearchRec = înregistrare
Timp: Integer;
Dimensiune: Integer;
Attr: Integer;
Nume: TFileName;
ExcludeAttr: Integer;
FindHandle: Thandle;
FindData: TWin32FindData;
se încheie;

Cele mai importante domenii ale acestei înregistrări sunt:

  • Nume - numele fișierului;
  • Dimensiune - mărimea fișierului în octeți;
  • Timp - momentul în care fișierul a fost creat în format DOS.

Pentru a determina dacă fișierul găsit are atributul dorit, se folosește o multiplicare logică bitwise:
dacă (F.Attr și faDyrectory) = F.Attr
apoi S: = 'Acesta este directorul';
Asta este, variabila F.Attr care are atributul cerut nu se schimba la ea in multiplicare logica biometrica.
  • Când se găsește primul fișier care satisface condițiile de căutare, este apelată funcția
    funcția FindNext (var F: TSearchRec): Integer;

    Variabila F, în care prima funcție a salvat rezultatul căutării, este trecută la funcția FindNext ca parametru. Pe baza informațiilor înregistrate, căutarea următorului fișier adecvat va continua.

  • Procesul de căutare se termină prin apelarea procedurii:
    procedura FindClose (var F: TSearchRec);

    Această procedură eliberează memoria pe care sistemul a alocat-o pentru procesul de căutare.


  • Funcțiile FindFirst și FindNext returnează valoarea 0. Dacă căutarea nu a întâmpinat erori și a fost găsit următorul fișier.

    De exemplu, luați în considerare un program simplu. care va căuta toate fișierele de pe unitatea C. În program, folderul este tratat ca un fișier, căutarea nu urcă înăuntru. Puteți descărca arhiva cu acest program.

    Articole similare