Skip to Content

Атрибуты файла. Поиск файла

Еще одна часто выполняемая с файлом операция — поиск файлов в заданном каталоге. Для организации поиска и отбора файлов используются специальные процедуры, а также структура, в которой сохраняются результаты поиска.

Запись

  1. type
  2.  
  3. TFileName = string;
  4.  
  5. TSearchRec = record
  6.  
  7. Time: Integer; {Время и дата создания}
  8.  
  9. Size: Integer; {Размер файла}
  10.  
  11. Attr: Integer; {Параметры файла}
  12.  
  13. Name: TFileName; {Полное имя файла}
  14.  
  15. ExcludeAttr: Integer; (He используется}
  16.  
  17. FindHandle: THandle; {Дескриптор файла}
  18.  
  19. FindData: TWin32FindData; {He используется}
  20.  
  21. end;

обеспечивает хранение характеристик файла после удачного поиска. Дата и время создания файла хранятся в формате MS-DOS, поэтому для получения этих параметров в принятом в Delphi формате TDateTime необходимо использовать следующую функцию:

function FileDateToDateTime(FileDate: Integer): TDateTime;

Обратное преобразование выполняет функция

function DateTimeToFileDate(DateTime: TDateTime): Integer;

Свойство Attr может содержать комбинацию следующих флагов-значений:

  • faReadOnly — только для чтения;
  • faDirectory — каталог;
  • faHidden — скрытый;
  • faArchive — архивный;
  • faSysFile — системный;
  • faAnyFile — любой.
  • favoiumeio — метка тома;

Для определения параметров файла используется оператор AND:

  1. if (SearchRec.Attr AND faReadOnly) > 0
  2.  
  3. then ShowMessage('Файл только для чтения');

Непосредственно для поиска файлов используются функции FindFirst и FindNext.

Функция

function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;

находит первый файл, заданный полным маршрутом Path и параметрами Attr (см. выше). Если заданный файл найден, функция возвращает 0, иначе — код ошибки Windows. Параметры найденного файла возвращаются в записи F типа TSearchRec.

Функция

function FindNext(var F: TSearchRec): Integer;

применяется для повторного поиска следующего файла, удовлетворяющего критерию поиска. При этом используются те параметры поиска, которые заданы последним вызовом функции FindFirst. В случае удачного поиска возвращается 0.

Для освобождения ресурсов, выделенных для выполнения поиска, применяется функция:

procedure FindClose(var F: TSearchRec);

В качестве примера организации поиска файлов рассмотрим фрагмент исходного кода, в котором маршрут поиска файлов задается в однострочном текстовом редакторе DirEdit, а список найденных файлов передается в компонент TListBox.

  1. procedure TForml.FindBtnClick(Sender: TObject);
  2.  
  3. begin
  4.  
  5. ListBox.Items.Clear;
  6.  
  7. FindFirst(DirEdit.Text, faArchive + faHidden, SearchRec);
  8.  
  9. while FindNext(SearchRec) = 0 do
  10.  
  11. ListBox.Iterns.Add(SearchRec.Name);
  12.  
  13. FindClose(SearchRec);
  14.  
  15. end;



Delphi Для профессионалов &1   |    Delphi Для профессионалов &2   |    Delphi Для профессионалов &3   |    Иллюстрированный самоучитель &1   |    Иллюстрированный самоучитель &2