FileFindFirst

La función empieza la búsqueda de los archivos y subcarpetas en el directorio correspondiente de acuerdo con el filtro especificado.

long  FileFindFirst(
   const string   file_filter,          // cadena - filtro de búsqueda
   string&        returned_filename,    // nombre del archivo o subcarpeta encontrada
   int            common_flag=0         // determina la zona de búsqueda
   );

Parámetros

file_filter

[in]  Filtro de búsqueda. En el filtro se puede especificar un subdirectorio (o una sucesión de subdirectorios anidados) respecto al directorio \Files en el que se precisa realizar la búsqueda.

returned_filename

[out]  Parámetro devuelto en el que se coloca el nombre del primer archivo o subcarpeta encontrada en caso del éxito. 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] Bandera que determina la ubicación del archivo. Si common_flag=FILE_COMMON, entonces el archivo se encuentra en una carpeta compartida de todos los terminales de cliente \Terminal\Common\Files. De lo contrario, el archivo está ubicado en una carpeta local.

Valor devuelto

Devuelve el manejador del objeto de búsqueda que hay que utilizar para la siguiente búsqueda de archivos y subcarpetas por la función FileFindNext(), o INVALID_HANDLE en caso no hay ningún archivo o subcarpeta que corresponda al filtro (en caso particular — la subcarpeta está vacía). Después de finalizar la búsqueda, hay que cerrar el manejador usando la función FileFindClose().

Ejemplo:

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

Véase también

FileFindNext, FileFindClose