Yeni

Delphi ilə fayllar və qovluqları necə axtarmaq olar

Delphi ilə fayllar və qovluqları necə axtarmaq olar

Fayl axtararkən tez-tez alt qovluqlarda axtarmaq faydalı və zəruridir. Budur, sadə, lakin güclü, hamısına uyğun sənədlər layihəsi yaratmaq üçün Delphi-nin gücündən necə istifadə edəcəyinizə baxın.

Fayl / Qovluq Maska Axtarışı Layihəsi

Aşağıdakı layihə yalnız alt qovluqlar vasitəsilə faylları axtarmağa imkan vermir, həm də Windows Explorer-dən Fayl Xüsusiyyətləri Dialogunu nə vaxt çağıracağını görə biləcəyiniz Adı, Ölçüsü, Dəyişdirmə Tarixi və s. Kimi sənəd atributlarını asanlıqla müəyyənləşdirməyə imkan verir. Xüsusilə, alt qovluqlarda recursively olaraq necə axtarış edildiyini və müəyyən bir fayl maskasına uyğun sənədlərin toplandığını nümayiş etdirir. Təkrarlama üsulu, kodunun ortasında özünü çağıran bir rutin olaraq təyin olunur.

Layihədəki kodu başa düşmək üçün SysUtils bölməsində təyin olunan növbəti üç metodla tanış olmalıyıq: FindFirst, FindNext və FindClose.

Tapıntısı

funksiyası FindFirst (const Yol: sim; Attr: tam; var Qeyd: TSearchRec): Tam;

FindFirst Windows API zənglərindən istifadə edərək ətraflı bir fayl axtarış proseduruna başlamaq üçün başlanğıc çağırışdır. Axtarış Path dəqiqləşdiricisinə uyğun olan faylları axtarır. Yol, ümumiyyətlə, vəhşi yer simvollarını (* və?) Ehtiva edir. Attr parametrində axtarışa nəzarət etmək üçün fayl atributlarının birləşmələri var. Attr-da tanınan fayl atributu sabitləri bunlardır: faAnyFile (hər hansı bir fayl), faDirectory (rehberler), faReadOnly (yalnız faylları oxuyun), faHidden (gizli sənədlər), faArchive (arxiv sənədləri), faSysFile (sistem sənədləri) və faVolumeID (həcm şəxsiyyət sənədləri).

FindFirst bir və ya daha çox uyğun fayl taparsa 0 (və ya uğursuzluq üçün bir səhv kodu, ümumiyyətlə 18) qayıdır və Rec-də ilk uyğun sənəd haqqında məlumat doldurur. Axtarışa davam etmək üçün eyni TSearcRec yazısından istifadə edib FindNext funksiyasına ötürməliyik. Axtarış başa çatdıqda, FindClose proseduru pulsuz daxili Windows qaynaqları üçün çağırılmalıdır. TSearchRec aşağıdakı kimi müəyyən edilmiş bir qeyddir:

typeTSearchRec = qeyd

Vaxt: tam;

Ölçüsü: Tam;

Attr: tam;

Adı: TFileName;

ÇıxartmaqAttr: Tam;

FindHandle: THandle;

FindData: TWin32FindData;

son;

İlk fayl tapıldıqda Rec parametri doldurulur və aşağıdakı sahələr (dəyərlər) layihəniz tərəfindən istifadə edilə bilər.
. Attr, yuxarıda göstərildiyi kimi faylın atributları.
. Adı yol məlumatı olmadan bir fayl adını təmsil edən bir simli tutur
. Ölçüsü tapılan baytlarda.
. Vaxt faylın dəyişdirmə tarixi və vaxtını bir tarix tarixi kimi saxlayır.
. FindData faylın yaradılması vaxtı, son giriş vaxtı və uzun və qısa fayl adları kimi əlavə məlumatları ehtiva edir.

Tapın

funksiyası FindNext (var Qeyd: TSearchRec): Tam;

FindNext funksiyası ətraflı sənəd axtarış prosedurunun ikinci addımdır. FindFirst çağırışı ilə yaradılan eyni axtarış qeydini (Rec) keçməlisiniz. FindNext-dən geri dönüş dəyəri müvəffəqiyyət üçün sıfırdır və ya hər hansı bir səhv üçün bir səhv kodu.

Tapın

proseduru FindClose (var Qeyd: TSearchRec);

Bu prosedur bir FindFirst / FindNext üçün tələb olunan xitam çağırışıdır.

Delphi'də Rekursiv Fayl Maskası Uyğunlaşması

Bu, işləmə vaxtında göründüyü kimi "Faylların axtarışı" layihəsidir. Formadakı ən vacib komponentlər iki düzəliş qutusu, bir siyahı qutusu, bir qutu və düymədir. Düzəltmə qutuları axtarışda olduğunuz yolu və fayl maskasını təyin etmək üçün istifadə olunur. Tapılan fayllar Siyahı qutusunda göstərilir və onay qutusu seçilibsə, bütün alt qovluqlar uyğun sənədlər üçün taranır.

Aşağıda Delphi ilə faylların axtarışının mümkün qədər asan olduğunu göstərmək üçün layihədəki kiçik kod parçasıdır:

proseduru FileSearch (const PathName, FileName: simli) ;

var Qeyd: TSearchRec;
Yol: sim;

başlamaq

Yol: = Daxil edinTrailingPathDelimiter (PathName);

əgər FindFirst (Yol + FileName, faAnyFile - faDirectory, Rec) = 0 sonra doğrayın

ListBox1.Items.Add (Yol + Soyut);

qədər FindNext (Rec) 0;

nəhayət

FindClose (Rec);

son;

{bütün kodu, xüsusən də rekursivdir
funksiya çağırışı içərisində tapıla bilər (yüklənir)
layihənin mənbə kodu}

son;