Căutare fișiere în delphi

Caută fișiere în Delphi vă ajută să găsiți fișiere care sunt potrivite pentru criteriile selectate programator - numele, dimensiunea, data creării, etc. Căutarea fișierelor pot fi efectuate atât peste un disc selectat și limitat la directorul specific. Caută fișiere în Delphi se realizează în trei etape.
  1. În primul rând este primul fișier care satisface o mască predeterminată. Această căutare este efectuată folosind
    funcționa FindFirst (Path const: String; Attr: Integer; var F: TSearchRec): Integer;

parametrul attr conține un set de atribute care pot fi luate în considerare în selectarea fișierelor:

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

Numele acestor atribute pot avea diferite denumiri în sisteme diferite. Acesta oferă Delphi tekoe de avertizare atunci când încercați să utilizați aceste nume. Prin urmare, este mai bine să nu utilizeze numele și valorile. Cu toate acestea, atunci neponyatki: încearcă să ghicească atunci este de 02 $ sau $ 08. Prin urmare, este necesar să se introducă valori constante sotvetstvuet, și fără probleme.

Aceste atribute sunt importante în biți individuali rezultați inclusiv Attr. Pentru a defini un set de atribute ale fișierului de care au nevoie pentru a rezuma pur și simplu:
Attr: = faReadOnly + faSysFile + faHidden;
Acest set de atribute determină funcția pentru a căuta fișierele de sistem numai ascunse cu caracteristica „Read Only“.

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

Printre cele mai importante domenii ale acestei înregistrări sunt:

  • Nume - numele fișierului;
  • Dimensiunea - Dimensiunea fișierului în octeți;
  • Timp - Timpul fișierul a fost creat în format DOS.

Pentru a determina dacă fișierul atribut găsit este utilizat la nivel de bit multiplicare logică:
dacă (F.Attr și faDyrectory) = F.Attr
apoi S: = „Acesta este un director“;
Adică, având un atribut dorit variabilă F.Attr atunci când bitwise multiplicare logică nu-l schimbă.
  • Atunci când primul fișier care se potrivește cu condițiile de căutare este găsit, funcția
    functioneaza FindNext (var F: TSearchRec): Integer;

    Variabila F, pentru care prima funcție este de a salva rezultatele căutării, funcția FindNext a trecut ca parametru. Pe baza informațiilor stocate în ea va fi continuată următorul meci este căutat.

  • Procesul de căutare este completat prin apelarea procedurii:
    Procedura FindClose (var F: TSearchRec);

    Această procedură eliberează memoria care a fost alocată pentru sistemul de proces de căutare.


  • Funcții FindFirst și valoarea de retur FindNext de la 0 în cazul în care căutarea nu a avut erori și o dată a fost găsit fișierul.

    Programul, care oferă funcția de căutare fișier, au fost mult timp cunoscute. Acest lucru, de exemplu, comandanții de fișiere (comandant Volkov, comandantul norton, dos navigator, departe). De asemenea, o funcție de căutare fișier este disponibil în toate sistemele de operare. În special, căutarea de fișiere Windows este invocat prin Start - Căutare - Toate fișierele și folderele. În caseta de dialog de căutare, utilizatorul trebuie să specifice modul în care se va căuta un nume de fișier sau masca și cataloga căutarea inițială. Vozmozhnot trebuie, de asemenea, să precizeze data modificările conținute în fișierul text, dimensiunea fișierului estimat.

    Și acum uite din nou, la fel ca în Delphinus este un fișier de căutare. În cazul în care nu este clar de ce poate dura, aici sunt câteva opțiuni. De exemplu, atunci când executați programul trebuie să verificați disponibilitatea fișierele necesare pentru a rula programul. Sau în fundal surselor de actualizări de software, sau de căutare pentru fișiere care conțin rezultatele programelor controlate, etc.

    Regulile de bază sunt numele de locuri de muncă pentru a căuta fișiere în procedura de căutare a fișierelor. După cum se dorește, puteți specifica numele fișierului direct, și numele măștii, în cazul în care numele nu este cunoscut sau poate avea mai multe fișiere care să corespundă criteriilor de căutare. Astfel, solicităm șabloanele de căutare speciale care conțin condiții de probă găsite în căutarea de fișiere. Bineînțeles, puteți căuta fișiere sau directoare întregi, de exemplu, toate elementele sistemului de fișiere al computerului.

    măști de fișier șablon poate conține:
    • Litere și cifre în numele fișierului și extensia;
    • Semnul * (asterisc), care sunt un substitut pentru orice număr de caractere în numele de fișier sau extensia;
    • Simbol? (Question mark). Masca acest caracter înlocuiește un singur caracter în numele de fișier sau extensia sau directorul.
    Dă exemple. Dacă doriți să găsiți toate fișierele text (fișiere cu extensia TXT), apoi masca de căutare va fi astfel: * .txt. Dacă doriți să căutați fișierele ale căror nume conțin cuvântul, de exemplu, vovan. masca va conține cuvântul și simbolurile * la începutul și la sfârșitul anului, care prevede eventuala prezență a altor caractere, la începutul și la sfârșitul numelui fișierului, precum și în expansiune: * vovan * * .. În cazul în care prima literă a numelui unui fișier. iar a patra b. apoi construi o mască: a ?? b *.

    Ar trebui să adaug că, în sistemele Windows cu litere mari și litere mici care operează în numele fișierelor nu diferă, și, prin urmare, căutarea se întâmplă, de asemenea, insensibil.

    De exemplu, ia în considerare un program de exemplu simplu. care poizvodit căutare pentru toate fișierele de pe unitatea C. În directorul de program este tratat ca un fișier în căutarea nu urca. Puteți descărca arhiva cu programul.

    Procedura TForm1.Button1Click (Expeditor: TObject);
    var Drive. octet;
    începe
    pentru unitate: = 0 până la 25 do
    dacă DriveExists (Unitate) atunci
    ListBox1.Items.Add (CHR (unitate + $ 41));
    se încheie;

    CreateDir (FilesSAMPServers); // - creează un director
    Dacă fileexists (FilesSAMPServers + „\ Nume serverov.ini“), apoi // - în cazul în care dosarul de fișier nou creat va întreprinde?
    începe
    CreateDir (FilesSAMPServers); // - creează un dosar din nou?

    SL: = TStringList.Create;
    SL.Add (S); // S nu este definit de ceea ce am făcut?
    S: = sDBComboBox1.Text; // această casetă text
    sDBComboBox1.Items.Add (S); // nu mai ușor să-l scrie doar în textul caseta:

    cu sDBComboBox1 do
    Items.Add (text);


    În ceea ce privește modul în care să împingă dosarul în dosar - trebuie să-l creați acolo. Iată codul care creează dosarul A în ea o mai mulți A, și în ea una:

    CreateDir ( 'A');
    CreateDir ( 'A \ A');
    CreateDir ( 'A \ A \ A');