Fájlok keresése a Delphi
- Először az első fájl, amely kielégíti egy előre meghatározott maszk. Ezt a keresést elvégezni
működnek FindFirst (const Path: String; Attr: integer; var F: TSearchRec): egész;
Attr paraméter tartalmaz egy sor olyan attribútumokat is figyelembe kell venni a kiválasztási fájlokat:
- faReadOnly = $ 01 - csak olvasható file;
- faHidden = $ 02 - egy rejtett fájl;
- faSysFile = $ 04 - egy rendszer fájl;
- faVolumeID = $ 08 - Volume label;
- faDirectory = 10 $ - könyvtár (a könyvtár);
- faArchive = $ 20 - egy archív fájlt;
- faAnyFile = $ 3F - tetszőleges állományt.
A nevek ezek a tulajdonságok eltérő nevei a különböző rendszerekben. Ez ad Delphi tekoe figyelmeztetés jelenik meg, hogy ezeket a neveket. Ezért jobb, ha nem használja a neveket és értékeket. Azonban akkor neponyatki: Próbáld meg kitalálni, akkor az $ 02 vagy $ 08. Ezért szükséges bevezetni állandók sotvetstvuet értékeket, és nem okoz problémát.
Ezek a tulajdonságok fontosak a kapott egyes bitek beleértve Attr. Hogy meghatározza az attribútumok a fájl szükséges, hogy egyszerűen összefoglalni:
Attr: = faReadOnly + faSysFile + faHidden;
Ez az attribútum hatására a funkció csak kereséshez rejtett rendszerfájlok jellegzetes „csak olvasható”.
találati tartalmazza a változó F. típusú, TSearchRec:
írja TSearchRec = rekord
Idő: integer;
Méret: integer;
Attr: integer;
Név: TFileName;
ExcludeAttr: integer;
FindHandle: THandle;
FindData: TWin32FindData;
végén;
A legfontosabb területek a rekord közül
- Név - a fájl neve;
- Méret - A méret a fájl byte;
- Time - Az idő jött létre a fájl DOS formátumban.
Annak eldöntésére, hogy az attribútum fájl található használt bitenkénti logikai szorzás:
ha (F.Attr és faDyrectory) = F.Attr
akkor S: = „Ez egy könyvtár”;
Ez azt jelenti, amelynek változtatható F.Attr kívánt attribútumot bitenkénti logikai szorzás nem változtatja meg.
működnek FindNext (var F: TSearchRec): egész;
Az F változó, amelyre az első feladata, hogy mentse a találatokat, FindNext funkció átadva paraméterként. Az információk alapján tárolt folytatódni fog új keresés.
eljárás FindClose (var F: TSearchRec);
Ez az eljárás felszabadítja a memóriát rendel a keresési folyamat rendszer.
Funkciók FindFirst és FindNext visszatérési értéke 0, ha a keresés nem talál hibát, és ha a fájlt talált.
Program, amely fájl keresés funkció már régóta ismertek. Ez például fájl parancsnokok (Volkov parancsnok, a Norton Commander, dos navigator, messze). Továbbá, egy fájl kereső funkció áll rendelkezésre az összes operációs rendszerek. Különösen a Windows file keresés hivatkoznak keresztül Start - Keresés - Minden fájl és mappa. A keresési párbeszédablak, a felhasználói igények, hogy meghatározza, hogyan fog kinézni a fájl nevét vagy maszk és katalógus az eredeti keresést. Vozmozhnot is meg kell határozni azt az időpontot a változásokat tartalmaz a szöveges fájl, a becsült fájlméretet.
És most nézd meg újra, mint a Delphi egy keresési fájlt. Ha nem világos, hogy miért lehet, hogy, íme néhány lehetőség. Például, amikor a program futtatásához szükség van, hogy ellenőrizze a rendelkezésre álló szükséges fájlokat a program futtatásához. Vagy a háttérben források szoftverfrissítések, vagy keresni a fájlokat tartalmazó eredményeit az ellenőrzött programok stb
Az alapvető szabályok a feladat nevét keresni a fájlokat a fájlban keresési eljárást. Amint szükséges, akkor adja meg a fájl nevét közvetlenül, és a nevét a maszk, ha a neve nem ismert, vagy lehet több fájlt a keresési feltételeknek megfelelő. Így kérünk a speciális kereső tartalmazó sablonok minta feltételek megtalálhatók a fájlok keresése. Természetesen, akkor keressük meg a fájlokat vagy a teljes könyvtárait, azaz minden eleme a számítógép fájlrendszert.
Sablon fájlmaszkokra tartalmazhatja:- Betűk és számok a nevét és a fájl kiterjesztését;
- A * (csillag), amelyek helyettesítik a karakterek számát a név vagy kiterjesztés;
- Symbol? (Kérdőjel). A maszk, hogy karakter helyettesíti egyetlen karakter a név vagy kiterjesztés vagy könyvtár.
Hozzáteszem, hogy a Windows operációs rendszerek a kis- és nagybetűk, a fájlok neveit nem különböznek, ezért a keresés is előfordul, érzéketlen.
Vegyük például egy egyszerű példa program. amely poizvodit keresése az összes fájlt a C meghajtón a program mappájában kezelni egy fájlt a keresés nem mászik. Tudod letölt a archívumot a program.
eljárás TForm1.Button1Click (Sender: TObject);
var meghajtó. byte;
kezdődik
Drive: = 0-25 csinálni
ha DriveExists (meghajtó) majd
ListBox1.Items.Add (Chr (meghajtó + $ 41));
végén;
CreateDir (FilesSAMPServers); // - létrehoz egy mappát
Ha FileExists (FilesSAMPServers + '\ serverov.ini Names'), akkor // - ahol az újonnan létrehozott mappát vállalja?
kezdődik
CreateDir (FilesSAMPServers); // - létrehoz egy mappát újra?
SL: = TStringList.Create;
SL.Add (S); // S nem határozza meg, hogy mit tettünk?
S: = sDBComboBox1.Text; // ebben a mezőben
sDBComboBox1.Items.Add (S); // nem könnyebb, hogy csak írni, hogy a doboz szöveg:
A sDBComboBox1 do
Items.Add (Text);
Ami hogyan nyomja mappa mappa - meg kell teremteni azt ott. Itt a kód, amely létrehozza a mappát A benne még egy A, és ez még egy:
CreateDir ( 'A');
CreateDir (\ A ');
CreateDir ( 'A \ \ A');