FileFindFirst

La funzione inizia la ricerca di file o sottodirectory in una directory in conformità con il filtro specificato.

long  FileFindFirst(
   const string   file_filter,          // Stringa - filtro di ricerca
   string&        returned_filename,    // Nome del file o sottodirectory trovata
   int            common_flag=0         // Definisce la ricerca
   );

Parametri

file_filter

[in] Filtro di ricerca. Una sottodirectory (o sequenza di sottodirectory nidificate) relativa alla directory \Files, in cui i file devono essere cercati, può essere specificata nel filtro.

returned_filename

[out]  Il parametro restituito, dove, in caso di successo, viene piazzato il nome del primo file o sottodirectory trovati. 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] Flag determinante la posizione del file. Se common_flag = FILE_COMMON, allora il file si trova in una cartella condivisa per tutti i terminali client \Terminal\Common\Files. In caso contrario, il file si trova in una cartella locale.

Valore restituito

Restituisce l'handle dell'oggetto cercato, che dev'essere usato per l'ulteriore ordinamento dei file e sottodirectory dalla funzione FileFindNext(), o restituisce INVALID_HANDLE quando non ci sono file e sottodirectory corrispondenti al filtro (nel caso particolare - quando la directory è vuota). Dopo aver cercato, l'handle dev'essere chiuso usando la funzione FileFindClose().

Nota

Per motivi di sicurezza, il lavoro con i file è strettamente controllato nel linguaggio MQL5. I file con cui sono condotte le operazioni di file utilizzando i mezzi MQL5, non possono esservi al di fuori della sandbox del file.

Esempio:

//--- 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!");
  }

Vedi anche

FileFindNext, FileFindClose