FileFindFirst

A função começa a busca de arquivos e subdiretórios em um diretório de acordo com o filtro especificado.

long  FileFindFirst(
   const string   file_filter,          // String - filtro de pesquisa
   string&        returned_filename,    // Nome do arquivo ou subdiretório encontrado
   int            common_flag=0         // Define a pesquisa
   );

Parâmetros

file_filter

[in]  Filtro de pesquisa. Um subdiretório (ou seqüência de subdiretórios aninhados) relativo ao diretório \Files, em que os arquivos devem ser procurados, podem ser especificados no filtro.

returned_filename

[out]  O parâmetro retornado, onde, em caso de sucesso, o nome do primeiro arquivo encontrado ou subdiretório é colocado. 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] Bandeira determinando a localização do arquivo. Se common_flag = FILE_COMMON, então o arquivo está localizado em uma pasta compartilhada para todos os terminais de cliente \Terminal\Common\Files. Caso contrário, o arquivo está localizado em uma pasta local.

Valor do Retorno

Retorna o manipulador do objeto pesquisado, que deve ser utilizado para posterior triagem dos arquivos e subdiretórios pela função FileFindNext(), ou INVALID_HANDLE quando não há nenhum arquivo e subdiretório correspondente ao filtro (no caso particular - quando o diretório está vazio. Após a pesquisa, o manipulador deve ser fechado usando a função FileFindClose().

Observação

Por razões de segurança, o trabalho com arquivos é estritamente controlada na língua MQL5. Arquivos com que as operações de arquivo são conduzidas usando os meios MQL5, não podem estar fora da caixa de proteção do arquivo.

Exemplo:

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

Também Veja

FileFindNext, FileFindClose