Cum să căutați fișiere și foldere cu Delphi

Atunci când căutați fișiere, este deseori util și necesar să căutați în subfoldere. Aici, vedeți cum să folosiți puterea Delphi pentru a crea un proiect simplu, dar puternic, de găsit toate asortările.

Proiect de căutare de mască de fișiere / foldere

Următorul proiect nu numai că vă permite să căutați fișiere prin subfoldere, dar vă permite, de asemenea, să determinați cu ușurință atributele fișierului, cum ar fi Nume, Mărime, Data modificării, etc. În special, demonstrează modul de a căuta recursiv prin subfoldere și asambla o listă de fișiere care se potrivesc cu o anumită mască de fișier. Tehnica de recurs este definită ca o rutină care se numește la mijlocul codului său.

Pentru a înțelege codul din proiect, trebuie să ne familiarizăm cu următoarele trei metode definite în unitatea SysUtils: FindFirst, FindNext și FindClose.

FindFirst

FindFirst este apelul de inițializare pentru a porni o procedură de căutare detaliată a fișierelor folosind apeluri API Windows. Căutarea caută fișiere care se potrivesc cu specificatorul Căii. Calea include de obicei caractere wildcard (* și?). Parametrul Attr conține combinații de atribute de fișiere pentru a controla căutarea. Constanțele de atribut de fișier recunoscute în Attr sunt: faAnyFile (orice fișier), faDirectory (directoare), faReadOnly (citește numai fișiere), faHidden (fișiere ascunse), faArchive (fișiere arhivare), faSysFile (fișiere de sistem) și faVolumeID (fișiere ID de volum).

Dacă FindFirst găsește unul sau mai multe fișiere potrivite, acesta returnează 0 (sau un cod de eroare pentru eșec, de obicei 18) și completează Rec cu informații despre primul fișier care se potrivește. Pentru a continua căutarea, trebuie să utilizăm aceeași înregistrare TSearcRec și să o transmitem funcției FindNext. La finalizarea căutării, trebuie să apelați procedura FindClose pentru a elibera resurse interne interne. TSearchRec este o înregistrare definită ca:

Când s-a găsit primul fișier, parametrul Rec este completat și următoarele proiecte pot fi utilizate de câmpurile (valorile).
. attr, atributele fișierului descrise mai sus.
. Nume deține un șir care reprezintă un nume de fișier, fără informații de cale
. mărimea în octeții fișierului găsit.
. Timp stochează data și ora modificării fișierului ca dată a fișierului.
. FindData conține informații suplimentare, cum ar fi timpul de creare a fișierului, ultima dată de acces și atât numele de fișiere lungi cât și scurte.

Găsește următorul

Funcția FindNext este al doilea pas în procedura de căutare a fișierelor detaliate. Trebuie să treceți aceeași înregistrare de căutare (Rec) creată de apelul către FindFirst. Valoarea de retur din FindNext este zero pentru succes sau un cod de eroare pentru orice eroare.

FindClose

Această procedură este apelul de încheiere necesar pentru un FindFirst / FindNext.

Potrivire mască de fișier recurentă Căutare în Delphi

Acesta este proiectul „Căutare fișiere”, așa cum apare la timpul de execuție. Cele mai importante componente ale formularului sunt două căsuțe de editare, o casetă de listă, o casetă de selectare și un buton. Casetele de editare sunt utilizate pentru a specifica calea pe care doriți să o căutați și o mască de fișier. Fișierele găsite sunt afișate în caseta Listă și dacă caseta este bifată, toate subfolderele sunt scanate pentru a se potrivi fișierele.

Mai jos este micul fragment de cod din proiect, pentru a arăta că căutarea fișierelor cu Delphi este la fel de ușor: