FileFindFirst

Starten die Sortierung der Dateien und der Unterverzeichnisse im entsprechenden Verzeichnis mit dem angegebenen Filter.

long  FileFindFirst(
   const string   file_filter,          // Zeile - Suchefilter
   string&        returned_filename,    // der Name von gefundenen Datei oder Unterverzeichnis
   int            common_flag=0         // bestimmt den Suchbereich 
   );

Parameter

file_filter

[in]  Suchfilter. Im Filter kann Unterverzeichnis (oder Folge der verschachtelten Unterverzeichnisse) gegenüber dem Verzeichnis angegeben werden \Files,in dem Dateien gesucht werden müssen.

returned_filename

[out]  Der zurückgegebene Parameter, wohin im Falle des Erfolges der Name von gefundenen Datei oder Unterverzeichnis unterbracht wird. 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] Flagge, die Dateilage bestimmt. Wenncommon_flag=FILE_COMMON ist, dann befindet sich die Datei im gesamten Ordner aller Client-Terminals \Terminal\Common\Files. Anderenfall befindet sich die Datei im lokalen Ordner.

Rückgabewert

Gibt Handle des Objektes der Suche zurück, das man für die weitere Sortierung der Dateien und der Unterverzeichnisse der FileFindNext() Funktion verwendet werden, oder INVALID_HANDLE wenn es keine Dateien und Unterverzeichnissen gibt, die dem Filter entsprechend (insbesondere, das Verzeichnis ist leer). Nach dem Abschluss der Suche muss man Handle mit Hilfe der FileFindClose(). Funktion schließen.

Hinweis

Aus Sicherheitsgründen ist die Arbeit mit Dateien in MQL5 streng gesteuert. Dateien, mit denen Datei-Operationen mittels MQL5 durchgeführt werden, können nicht außerhalb der Datei-Sandbox sein.

Beispiel:

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

Sehen Sie auch

FileFindNext, FileFindClose