Я нашел что-то странное с этой функцией. По результатам поиска. Давайте представим, что у меня есть эти файлы внутри C: \ temp: afile.m, asong.mp3, amovie.mp4 Теперь, когда я выполняю поиск. FileSearch ('C: \ Temp', '. *. Mp3; *. Mp4', FileList); Результатом в списке являются 3 файла, а не последние 2. Почему?

м Приложении я использую следующую процедуру для рекурсивного сканирования любой папки и подпапок, если папка содержит текстовые файлы (* .txt), я добавляю имя файла в TStringList, определенный в моей процедуре:

procedure FileSearch(const PathName: string; var lstFiles: TStringList);
const
  FileMask = '*.txt';
var
  Rec: TSearchRec;
  Path: string;
begin
  Path := IncludeTrailingBackslash(PathName);
  if FindFirst(Path + FileMask, faAnyFile - faDirectory, Rec) = 0 then
    try
      repeat
        lstFiles.Add(Path + Rec.Name);
      until FindNext(Rec) <> 0;
    finally
      FindClose(Rec);
    end;

  if FindFirst(Path + '*.*', faDirectory, Rec) = 0 then
    try
      repeat
        if ((Rec.Attr and faDirectory) <> 0) and (Rec.Name <> '.') and
          (Rec.Name <> '..') then
          FileSearch(Path + Rec.Name, lstFiles);
      until FindNext(Rec) <> 0;
    finally
      FindClose(Rec);
    end;
end;

Все отлично работает, но я хочу иметь возможность искать несколько расширений файлов. Я попытался изменить FileMask, чтобы сделать это, но каждый раз, когда он ничего не возвращает, вероятно, потому что он ищет недопустимое расширение. Я попробовал каждое из следующих безуспешно: (очевидно, пытался по одному, я не писал строки 3 раза в моей процедуре)

FileMask = '*.txt|*.rtf|*.doc';

FileMask = '*.txt;*.rtf;*.doc';

FileMask = '*.txt,*.rtf,*.doc';

Я чувствую себя глупо, спрашивая об этом, но как мне разрешить включение дополнительных расширений файлов в поиск? Я могу сделать это для диалогов Open и Save, почему я не могу разделить расширения здесь?

Благодарю.

Крейг.

Ответы на вопрос(2)

Ваш ответ на вопрос