Fájl kereső szoftver

Fájl kereső szoftver

Ebben a leírásban, akkor megnézzük az alapelveket a program szervezését keresési fájlokat. Kezdeni, hogy meghatározza, miért kell, hogy legyen. Például, ha szüksége van, amikor a program elindul, hogy egy adott könyvtárat, hogy átvizsgálja a jelenléte DOC fájlokat, és ha megnyitni őket szerkesztés vagy nyomtatás. És hogyan ez az ötlet: a háttér keresés a neten EXE fájlt, ha azt észleli, egy új változat, az automatikus frissítéseket.


Sokan ismerik a programot, ahol lehet keresni a fájlokat, fájlkereső szabályokat. A fájlok kereshetők fájlként parancsnokok (Norton, farkasok dos navigátor, fényszórók), így bármilyen operációs rendszert. A Windows operációs rendszer neve a fájl keresés párbeszéd „Start” - „Keresés” - „Minden fájl és mappa”. A megnyitott ablakban beállíthatja a feltétele a fájlt (a név a maszk), és a kezdeti keresési útvonal (könyvtár). Másrészt lapjaira párbeszédablak, akkor bontsa ki a keresés lehetőségét módosítás dátuma szerint tartalmazza a szöveg méretét.

Emlékezzünk a szabályokat megállapító fájlokat. Megadhatod a fájl nevét és a maszkot, ha a név ismeretlen vagy meg kell találni egy pár. Ie egy speciális keresési mintát, akkor szervezni mintavételi körülmények talált fájlokat. Azonnal mondom, ez a megállapítás is alkalmazható fájlokat és könyvtárakat. Nevezzük őket a fájlrendszer elemekkel. A maszk minta a kívánt elemek lehetnek:
1. A betűk és számok a neve és kiterjesztése.
2. A * (csillag előjellel „többszörösen”), amely helyettesíti akárhány különböző betűk és számok a nevét vagy kiterjesztését.
3. Symbol. (Kérdőjel), amely felváltja egy betű vagy szám a címben vagy a kívánt táguló elem.
Például, ha keres bármilyen szöveget kiterjesztésű fájlokat TXT. A fájl nevét meg kell beírni „* .txt” (írásbeli idézőjelek nélkül), és a rendszer megtalálja ezeket a fájlokat a megadott meghajtó vagy könyvtár. Ha meg kell találni az összes fájl nevével sperma, majd a fájl keresési mezőbe írjuk be „sperma. *”. Ha meg kell találni tárgyakat a harmadik levél k és t az első levél a kiterjesztés, akkor írja be az „?? k * .T *”. Itt a kérdőjel azt jelzi, bármilyen jellegű, a harmadik karakter a rendelés a k betű, a továbbiakban: fájlnév (könyvtár) állhat tetszőleges számú betűk és számok azt jelzik, hogy a csillag. A kiterjesztése az első betű t, majd ezt követően bármely meghosszabbítását.
Megjegyzés: A fájlok és könyvtárak Windows operációs rendszert keresett érzéketlen, azaz a kis- és nagybetűk nem különböztetünk meg.

Most úgy vélik a program megkeresi a fájlokat Object Pascal programozási nyelv.

Az egész szervezet keresési ciklus, azaz ez egy ciklus keresés folytatása, csökken:
1. A keresési feltételek megadása. Ez a könyvtár, és a maszkot a kívánt elem vagy elemek, attribútumok az elem (ek). Ha megad keresési feltételek egyszerre van egy kereső az első megfelelő állapotban. Ez a funkció FindFirst.
2. Keresés Folytatás a következő meghatározott tétel első bekezdése feltételeinek. Ez FindNext funkciót, és ennek oka lehet bármennyi alkalommal, amíg az összes fájlokat és könyvtárakat, amelyek megfelelnek a feltétel nem lesz megtalálható.
3. Lezárult a keresési és kiadása lefoglalt memória a rendszer keresést. FindClose csapat.

FindFirst
(KATALOG_POISKA_I_MASKA_FAYLA,
ATRIBUTY_ISKOMOGO_FAYLA. POISKOVOYA_PEREMENNAYA);

ahol: Katalógus megtalálni és egy maszkot a kívánt elem - a húr érték string típusú lehet, például tartalmazza a „c :. \ *” - minden elemét a C meghajtó gyökérkönyvtárába Megjegyezzük, hogy a teljes elérési utat keresni.

Tulajdonságai a kívánt elem felhasználó vagy a rendszer attribútumokat, amely egy fájl (könyvtár lemez címke). Itt van egy lista róluk:
faReadOnly - "read-only" fájlokat. Ez az attribútum be van állítva a fájlokat, hogy nem ajánlott módosítani, törölni. Ez az attribútum olyan fájlok, például rögzített CD-k.
faHidden - rejtett fájlokat. Normális böngésző beállításait és utasító ezeket a láthatatlan fájlokat.
faSysFile - Rendszer fájlokat.
faVolumeID - Fájl lemez címke. Ez a neve elemnek lemezcím (maximum 11 karakter).
faDirectory - könyvtár tulajdonság tulajdonság.
faArchive - Rendszeres fájlt. Az alapértelmezett beállítás, hogy újra létre a fájlokat.
faAnyFile - Ha be van állítva, mint egy attribútum a kívánt elemek, akkor a keresés az összes fenti tulajdonságokat.
Ezek meg kell nézni csak elemek attribútum „könyvtár” és „rejtett”, akkor lehet alkalmazni a matematikai jele túl például faDirectory + faHidden.

Keresés típusú változó TSearchRec. Ebben, a sikeres keresés eredményeként, az összes szükséges adatot a megtalált fájl bejegyzés fog szerepelni.

Mivel FindFirst függvénye, meg kell vissza értéket is. Ez az érték Integer és az eredmény egy fájl kereső (Search hibakód). Ha a fájl, akkor nulla lesz.

Ez a funkció tovább folytatja a keresést meghatározott FindNext funkciót. Értékét adja vissza a találati (nulla esetén a sikeres keresés).

Bezárja megtalálja és kiszabadítsa a memória mennyiségét a kereső rendszer.

Most tekintsünk egy példát. Tegyük fel, hogy meg kell találni a fájlok és könyvtárak a DELPHI könyvtár a C meghajtón a jövőben, akkor a saját, változó a maszk, változtassa meg a keresési feltételeket. Ahhoz, hogy egy része a ListBox1 és Button1 OnClick reakció a gombot:

eljárás TForm1.Button1Click (Sender: TObject);
Var SR: TSearchRec; // változó keresési
FindRes: integer; // változó felvenni a találati
kezdődik
ListBox1.Clear; // takarítás ListBox1 alkatrész mielőtt ez a fájl listát

FindRes: = FindFirst ( 'c: \ Delphi \ * *.', FaAnyFile, SR); // munkakeresés követelményeit, és indítsa el a keresést

Míg FindRes = 0 do // amíg meg nem találjuk a fájlok (könyvtárak), majd végezze el a ciklust
kezdődik
ListBox1.Items.Add (SR.Name); // hozzá a listához a nevét az elem talált
FindRes: = FindNext (SR); // folytatja a keresést a meghatározott feltételek
végén;
FindClose (SR); // Keresés bezárása
végén;

A fenti példa kód, elvileg az alapja a szervezet mélyebb keresés, keresés a fájlok létrehozásáról, a szót tartalmazó. Ha ezt a programot egy, majd nyomja meg a gombot Button1 látni fogja a listán az első és a második sor elemek. „” és "..". Ezek olyan elemek, amelyek „könyvtár” attribútumot. Az első tartalmazza a linket a gyökér könyvtárat a merevlemez, akkor egy második kapcsolatot a legfelső szintű könyvtárába. A második megfelel a kör alakú kagyló, mint a Norton, ha úgy dönt, a könyvtár „..”, és nyomja meg az »ENTER« gombot. Így kap a könyvtár egy magasabb szintre. Természetesen a mi kereső program az ilyen elemek nem szükségesek ahhoz, hogy a listán, így figyelmen kívül hagyjuk a jelenlétét. Rögzítse a gombbal eljárást Button1 gomb:

eljárás TForm1.Button1Click (Sender: TObject);
Var SR: TSearchRec;
FindRes: integer;
kezdődik
ListBox1.Clear;

FindRes: = FindFirst ( 'c: \ Delphi \ * *.', FaAnyFile, SR);
Míg FindRes = 0 do
kezdődik
if ((SR.Attr és faDirectory) = faDirectory) egy d // Ha talált tételt katalógus és
((SR.Name = ' ') vagy (SR.Name =' ..')), akkor // azt a nevet "" vagy "..", akkor:
kezdődik
FindRes: = FindNext (SR); // továbbra keresés
Folytatás // továbbra hurok
végén;

ListBox1.Items.Add (SR.Name);
FindRes: = FindNext (SR);
végén;
FindClose (SR);
végén;

Ebben az esetben, ha a könyvtár „” nevű vagy a neve „..”, a program továbbra is feldolgozza a keresési ciklus anélkül, hogy a nevét, a talált tárgy a komponens ListBox1.

Most tekintsük a típus TSearchRec. Ez számos hasznos funkcióval:
Név - a név a megtalált könyvtár (file);
Méret - A fájl mérete bájtban;
Attr - az attribútumok a könyvtár (file);
Time - időérték csomagolják, és könyvtár létrehozás dátuma (fájl).

Az összes fenti tulajdonságok már tekinteni, vagy pedig azonnal megértette, kivéve az ingatlanok Time. Azt a egész típusú, és tartalmaz egy értéket csomagolt fájl dátumát és idejét a teremtés. Kicsomagolás útján teszik FileDateToDateTime függvény, amely visszaadja eredményeként a dátum és idő értékét.
Most adjuk hozzá a mi formában DateTimePicher1 alkatrész (Win32 oldal), és én hozzá néhány sort.

eljárás TForm1.Button1Click (Sender: TObject);
Var SR: TSearchRec;
FindRes: integer;
kezdődik
ListBox1.Clear;

FindRes: = FindFirst ( 'c: \ Delphi \ * *.', FaAnyFile, SR);
Míg FindRes = 0 do
kezdődik
if ((SR.Attr és faDirectory) = faDirectory) és
((SR.Name = ' ') vagy (SR.Name =' ..')), majd
kezdődik
FindRes: = FindNext (SR);
Folytatás
végén;
ha FileDateToDateTime (SR.Time) kezdődik
FindRes: = FindNext (SR); // továbbra keresés
Folytatás // továbbra hurok
végén;

ListBox1.Items.Add (SR.Name);
FindRes: = FindNext (SR);
végén;
FindClose (SR);
végén;

Ahogy talán már észre, akkor válassza ki a fájlok és mappák dátum, kezdve a megadott komponens DateTimePicker1.

Most megpróbálunk megszervezni a keresést a fájlok minden alkönyvtárban. Ez nem olyan egyszerű, mint amilyennek látszik első pillantásra. Majd manuálisan kell szervezni a teljes input-output ciklus a katalógus, keresés fájlokat. Kicsit bonyolult dolog, de talán azoknak, akik már dolgoztak egy programozási nyelv pascal vagy mások ismerik többféle technológia és mnogovlozhennosti ugyanezt a kódot használja. Röviden ismertesse az algoritmus egy ilyen program.
1. Adja meg az első keresési feltételek a keresést az első tételt.
2. Ha a fájl, majd nyomtassa ki és kezelje ennek megfelelően (a listában megjelenő, nyitott, törlés, stb.)
3. Ha egy könyvtár is található, akkor kezdődik egy új keresési eljárás. De a kód ugyanaz marad. Mi csak újra hívást, és lépnek ugyanarra a keresési eljárást.
4. Treat ugyanúgy minden befektetett ebbe a könyvtárba a fájlokat és könyvtárakat (Új keresés elindításához az észlelt könyvtárban).
5. Ha az elemek egy alkönyvtárban már nem, a feldolgozási eljárások keresés a folyamat befejeződött, és kap belőle. Ugyanakkor találjuk magunkat ugyanazon a helyen, ahol és felhívta az eljárást. De ez volt az úgynevezett ugyanazon eljárást. Ezért a program fut tovább tovább visszatérés után.
Így, mivel a program fordul tekerjük, úgynevezett labdát, így megfordul, és mutasson. A program fut a teljesítményt minden alkönyvtára fa elvégzésével azonos darab kód! És míg az adatok keresési feltételek nem akadályozzák, és tárolja azokat az egyes egyedi folyamat.

Vegyünk egy példát. Hozzon létre egy új projektet. Ahhoz, hogy hozzon létre egy külön keresési eljárást, meg kell, hogy állapítsa meg a megfelelő szakaszban (manuálisan létrehozni, így és állapítsa meg magad).

Nyilvános sorban írják:

A részben a programkód a „vége”. helyezzen be egy üres váz eljárás

eljárás TForm1.FindFile (Dir: String);
kezdődik

Az alakja betét alkatrész ListBox1 listában Button1, Edit1. Mert Edit1 komponens Text tulajdonság beállítása "c: \ delphi". Ügyeljen arra, hogy az utolsó karakter, a jel „”, amelynek jelenlétében a kezdeti keresési útvonal van szükség. További eljárás a OnClick Button1 gombot a következő:

eljárás TForm1.Button1Click (Sender: TObject);
kezdődik
ListBox1.Clear; // Töröljük a fájlok listája
FindFile (Edit1.Text); // talál fájlokat a megadott kezdeti feltételeket Edit1
végén;

Azért hoztuk létre manuálisan keresni az eljárást:

eljárás TForm1.FindFile (Dir: String);
Var SR: TSearchRec;
FindRes: integer;
kezdődik
FindRes: = FindFirst (Dir + '* *.', FaAnyFile, SR);
Míg FindRes = 0 do
kezdődik
if ((SR.Attr és faDirectory) = faDirectory) és
((SR.Name = ' ') vagy (SR.Name =' ..')), majd
kezdődik
FindRes: = FindNext (SR);
Folytatás
végén;

if ((SR.Attr és faDirectory) = faDirectory), akkor // ha a könyvtár található, a
kezdődik
FindFile (Dir + SR.Name + '\'); // adja meg a keresési eljárást a paramétereket az aktuális könyvtár + könyvtárat, hogy megtaláltuk
FindRes: = FindNext (SR); // ellenőrzés után alkönyvtár, továbbra is keresni a könyvtár
Folytatás // továbbra hurok
végén;

ListBox1.Items.Add (SR.Name);
FindRes: = FindNext (SR);
végén;
FindClose (SR);
végén;

Ha Edit1 komponenst az eredeti file keresési kifejezés egy root mappát, mint például a „C:”, akkor kapsz egy teljes listát az összes fájlt a lemezen. Ügyeljen arra, hogy a fájlok keresési sebesség és a sebesség a programot.