Comment rechercher différents types de fichiers à l'aide de la méthode FindFirst?

Dans mon Application j'utilise la procédure suivante pour analyser récursivement n'importe quel dossier et sous-dossiers, si le dossier contient des Fichiers Texte (*.txt) j'ajoute le nom du fichier à un TStringList défini dans ma procédure:

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;

Tout fonctionne parfaitement, mais je veux être capable de rechercher plusieurs extensions de fichier. J'ai essayé de modifier le FileMask pour ce faire, mais à chaque fois il ne retourne rien, probablement parce qu'il est à la recherche d'une extension non valide. J'ai essayé de chacun des éléments suivants, avec pas de chance: (essayé à un moment de toute évidence, je n'ai pas écrit les lignes ci-dessous 3 fois dans ma procédure)

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

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

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

Je me sens bête de demander ça, mais comment puis-je autoriser le supplément des extensions de fichiers à inclure dans la recherche? Je peux le faire pour Ouvrir et Enregistrer des boîtes de dialogue, pourquoi ne peux-je séparer les extensions ici?

Grâce.

Craig.

OriginalL'auteur | 2011-05-13