поиск первого файла в папке FindFirst(каталог поиска и маска файла, атрибуты искомого файла, поисковая переменная);
каталог и маска - 'c:\*.*'
атрибуты искомого файла faReadOnly - только чтение файлов faHidden - скрытые файлы faSysFile - системные файлы faVolumeID - файл метки диска faDirectory - атрибут признака каталога faArchive - обычный файл faAnyFile - поиск по всем атрибутам можно применять например так: faDirectory+faHidden
поисковая переменная должна иметь тип - TsearchRec
функция возвращает ноль если файл найден.
поиск следующего файла findNext(поисковая перменная) в случае удачного поиска возвращает ноль
finfClose - закрывает поиск и освобождает память
тип TsearchRec такие параметры Name - имя файла в байтах Size - размер Attr - атрибуты каталога файла Time - упакованное значение времени и даты создания каталога (файла)
пример использования var FindRes:integer; // peremennaya zapisi poiska Sr:TSearchRec; //poisk peremennaya
begin listbox1.clear; FindRes:=FindFirst( 'c:\delphi\*.*' , faAnyFile , SR );
//poisk while FindRes=0 do begin Listbox1.Items.Add(SR.name); FindRes:=FindNext(SR); end; FindClose(SR); end;
пример использования 2 в этом случае при нахождении каталога с именем "." и с именем ".." программа продолжит обработку цикла поиска без вывода найденого имени элемента в компонент списка листбокс. var FindRes:integer; // peremennaya zapisi poiska Sr:TSearchRec; //poisk peremennaya
begin listbox1.clear; FindRes:=FindFirst( 'c:\delphi\*.*' , faAnyFile , SR );
//poisk while FindRes=0 do begin if ((SR.attr and faDirectory)=faDirectory) and ((SR.name='.') or (SR.name='..')) then begin FindRes:=FindNext(SR); //prodolzhit poisk Continue; //prodolzhit tsikl end; Listbox1.Items.Add(SR.name); FindRes:=FindNext(SR); end; FindClose(SR); end;
пример использования 3 поиск по дате создания. ищетфайлы созданные начина с даты указанной в тдатапикере var FindRes:integer; // peremennaya zapisi poiska Sr:TSearchRec; //poisk peremennaya
begin listbox1.clear; FindRes:=FindFirst( 'c:\delphi\*.*' , faAnyFile , SR );
//poisk while FindRes=0 do begin if ((SR.attr and faDirectory)=faDirectory) and ((SR.name='.') or (SR.name='..')) then begin FindRes:=FindNext(SR); //prodolzhit poisk Continue; //prodolzhit tsikl end;
if FileDateToDateTime(SR.Time)<DateTimePicker1.Date then begin FindRes:=FindNext(SR); //prodolzhit poisk Continue; //prodolzhit tsikl end;
Listbox1.Items.Add(SR.name); FindRes:=FindNext(SR); end; FindClose(SR); end;
Организовуем поиск по вложенным каталогам в папке edit1.text:='c:\delphi\'; public procedure FindFile(Dir:String);
procedure Tform1.FindFile(Dir:String); var SR:TsearchRec; FindRes:Integer; begin FindRes:=FindFirst(Dir+'*.*'+faAnyFile,SR); while FindRes=0 do begin
if ((SR.Attr and faDirectory)=faDirectory) and ((SR.Name='.') or (SR.Name='..')) then begin FindRes:=FindNext(SR); Continue; end;
//esli nayden katalog a ne fayl if ((SR.Attr and faDirectory)=faDirectory) then begin FindFile(Dir+SR.Name+'\'); FindRes:=FindNext(SR); Continue; end;
ListBox1.Items.Add(SR.Name); FindRes:=FindNext(SR); end; FindClose(SR); end;
procedure Tform1.Button1.Click(Sender:TObject); begin listbox1.clear; FindFile(Edit1.text); end;
|