try repeat with SearchRec.FindData do begin if (SearchRec.Name = '.') or (SearchRec.Name = '..') or (SearchRec.Name = ") then continue; FileName := SlashSep(Editl.Text, SearchRec.Name); SHGetFileInfo(PChar(FileName), 0, Shlnfo, SizeOf(ShInfo); SHGFI_TYPENAME or SHGFI_SYSICONINDEX); Attributes := AttrStr(dwFileAttributes); with ListViewl.Items.Add do begin Caption := SearchRec.Name; Imagelndex := ShInfo.iIcon; SubItems.Add(IntToStr(SearchRec.Size)); SubItems.Add((ShInfo.szTypeName)); SubItems.Add(FileTimeToDateTimeStr(ftLastWriteTime)); SubItems.Add(attributes); SubItems.Add(Editl.Text + cFileName); if (FILE_ATTRIBUTE_DIRECTORYanddwFileAttributes) > 0 then SubItems.Add('dir') else SubItems.Add('file'); end; Result := True; end;
209
until (FindNext(SearchRec) <> 0); finally FindClose(SearchRec); end; ListViewl.Items. EndUpdate; end; Bu protsedura o‘zgaruvchilarning e’lon qilish bolimida lokal
protsedura —function AttrStr(Attr:Integer): string; yaratilgandir.
Protsedura tanasida ListViewl ikki usuli chaqirilgan:
ListViewl.Items.BeginUpdate; ListViewl.Items. Clear; Birinchi usul BeginUpdate ro‘yxat elementlari o‘zgarishi
boshlanganligi haqida xabar beradi. To EndUpdate chaqirilmaguncha
o‘zgarishlar ekranda aks etmaydi.
Joriy ro‘yxat ListViewLItems. Clear usuli bilan tozalanadi.
Shundan so‘ng fayl izlash sikli boshlanadi:
FindFirst —izlashni boshlaydi.
Birinchi param etr izlash maskasi, masalan 'C:\*. yoki
'C:\Fold\*.exe\ Ikkinchi parametr —fayl atributlari.
faAnyFile —ixtiyoriy fayllar.
faReadOnly —atributi ReadOnly bolgan fayllar.
faHidden —berkitilgan fayllar.
faSysFile —sistema fayllari.
faArchive —arxiv fayllari.
faDirectory —direktoriyalami izlash.
Oxirgi parametr izlash natijasi haqida ma’lumot qaytaruvchi, ya’ni
fayl nomi, hajmi, yaratilish vaqti va hokazo.
Izlash funksiyasi nuqta yoki ikki nuqta qaytarishi mumkin. Bunday
natija ko‘rilmaydi: