Căutare fișiere în delphi
- Î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ă.
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.
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.
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');