FindAllFiles/fr

From Lazarus wiki
Jump to: navigation, search

English (en) español (es) suomi (fi) français (fr)

Unité: Lazarus LazFileUtils (adaptation en UTF-8 du code de la RTL et gestion des fichier/répertoire additionnelle).

Voir aussi :

procedure FindAllFiles(AList: TStrings; const SearchPath: String;
  SearchMask: String = ''; SearchSubDirs: Boolean = True; DirAttr: Word = faDirectory); 
 
function FindAllFiles(const SearchPath: String; SearchMask: String = '';
  SearchSubDirs: Boolean = True): TStringList;

findallfiles recherche les fichiers correspondants au masque de recherche dans le dossier SearchPath et ses sous-dossiers si spécifié, puis remplit une StringList avec les noms de fichier résultants.

Le masque peut être un masque simple comme vous pouvez l'utiliser avec les fonctions FindFirst/FindNext, ou il peut consister en une liste de masques, séparés par le point-virgule (;).
Les espaces dans le masque sont traités comme des litéraux.

Il y a deux versions surchargées de cette routine. La première est une procédure et suppose que que la StringList passées en paramètre a déjà été créée. La seconde est une fonction qui crée la StringList en interne et la retourne comme retour de fonction. Dans les deux cas, la StringList doit être détruite par la procédure appelante.

Exemple:

uses 
...
LazFileUtils
...
var
  PascalFiles: TStringList;
begin
  //No need to create the stringlist; the function does that for you
  PascalFiles := FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true); //find e.g. all pascal sourcefiles
  try
    ShowMessage(Format('Found %d Pascal source files',[PascalFiles.Count]));
  finally
    PascalFiles.Free;
  end;

IMPORTANT NOTE:
La fonction "FindAllFiles" crée la StringList en interne. Cela peut sembler pratique à première vue, mais il est très facile de créer des fuites de mémoire de cette façon :

  // NE FAITES JAMAIS CELA !!!! - Il n'y a aucune façon de détruire la StringList crée par FindAllFiles.
  Listbox1.Items.Assign(FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true));
Note-icon.png

Remarque: Si vous voulez utiliser cette fonction dans des programmes en ligne de commande, ajouter une exigence de projet pour LCLBase, qui évitera de tirer toute la LCL.