FileFindFirst

Commence le balayage des fichiers et des sous-répertoires dans le directoire correspondant conformément au filtre indiqué.

long  FileFindFirst(
   const string   file_filter,          // chaîne - le filtre de la recherche 
   string&        returned_filename,    // le nom du fichier trouvé ou du sous-répertoire
   int            common_flag=0         // définit le domaine de recherches
   );

Paramètres

file_filter

[in]  Le filtre de la recherche. On peut indiquer le sous-répertoire dans le filtre (ou la séquence des sous-répertoires inclus) concernant le répertoire \Files, où il est nécessaire de passer l'excédent des fichiers.

returned_filename

[out]  Le paramètre rendu, où en cas de la réussite se place le nom du premier fichier trouvé ou du sous-répertoire. Only the file name is returned (including the extension), the directories and subdirectories are not included no matter if they are specified or not in the search filter.

common_flag

[in] Le drapeau, déterminant l'endroit du fichier. Si common_flag=FILE_COMMON, le fichier se trouve dans le dossier commun de tous les terminaux de client \Terminal\Common\Files. Dans le cas contraire le fichier se trouve dans le dossier local.

La valeur rendue

Rend le handle de l'objet de la recherche, lequel il est nécessaire d'utiliser pour un balayage ultérieur des fichiers et des sous-répertoires par la fonction FileFindNext(), ou INVALID_HANDLE dans le cas où il n'y a pas d'aucun fichier et le sous-répertoire, correspondant au filtre (dans le cas particulier — le répertoire est vide). Après la fin de la recherche il est nécessaire de fermer le handle à l'aide de la fonction FileFindClose().

Exemple:

//--- display the window of input parameters when launching the script
#property script_show_inputs
//--- filter
input string InpFilter="Dir1\\*";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string file_name;
   string int_dir="";
   int    i=1,pos=0,last_pos=-1;
//--- search for the last backslash
   while(!IsStopped())
     {
      pos=StringFind(InpFilter,"\\",pos+1);
      if(pos>=0)
         last_pos=pos;
      else
         break;
     }
//--- the filter contains the folder name
   if(last_pos>=0)
      int_dir=StringSubstr(InpFilter,0,last_pos+1);
//--- get the search handle in the root of the local folder
   long search_handle=FileFindFirst(InpFilter,file_name);
//--- check if the FileFindFirst() is executed successfully
   if(search_handle!=INVALID_HANDLE)
     {
      //--- in a cycle, check if the passed strings are the names of files or directories
      do
        {
         ResetLastError();
         //--- if it's a file, the function returns true, and if it's a directory, it returns error ERR_FILE_IS_DIRECTORY
         FileIsExist(int_dir+file_name);
         PrintFormat("%d : %s name = %s",i,GetLastError()==ERR_FILE_IS_DIRECTORY ? "Directory" : "File",file_name);
         i++;
        }
      while(FileFindNext(search_handle,file_name));
      //--- close the search handle
      FileFindClose(search_handle);
     }
   else
      Print("Files not found!");
  }

Voir aussi

FileFindNext, FileFindClose