FileFindFirst

Bu fonksiyon, belirtilen konumdaki dosyalar veya alt-dizinler için belirtilen filtreye göre arama başlatır.

long  FileFindFirst(
   const string   file_filter,          // Dizgi - arama filtresi
   string&        returned_filename,    // Bulunacak dosyanın veya alt-dizinin ismi
   int            common_flag=0         // Aramayı biçimini tanımlar
   );

Parametreler

file_filter

[in]  Arama filtresi. Herhangi bir alt-dizin (veya birden çok bitişik alt-dizin), aramanın yapılacağı \Files dizinine bağlı olarak, filtre içinde belirtilebilir.

returned_filename

[out]  Dönüş parametresi - başarılı sonuç halinde, bulunan ilk dosyanın veya alt-dizinin ismi. 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]  Dosyanın konumunu belirleyen bayrak. common_flag = FILE_COMMON ise dosya, tüm kullanıcılar için paylaşılan bir klasöre  \Terminal\Common\Files, aksi durumda bir yerel klasöre yerleştirilmiştir.

Dönüş değeri

Başarılı sonuç durumunda, FileFindNext() fonksiyonu ile yapılacak daha sonraki aramalarda kullanılmak için, dosyanın veya alt-dizinin tanımlayıcı değerine dönüş yapar. Aksi durumda, filtreye karşılık gelen bir dosya veya <t3>alt-dizin</t3> bulunamamışsa (örneğin - dizin boş ise), INVALID_HANDLE değerine dönüş yapar. Arama tamamlandıktan sonra, işleyici FileFindClose() fonksiyonu ile kapatılmalıdır.

Not

Dosya işlemleri, MQL5 dili içerisinde güvenlik amacıyla sıkı şekilde kontrol edilmektedir. İşlemleri, MQL5 araçları ile yürütülen dosyalar, dosya güvenlik-ortamı (sandbox) dışında yer alamaz.

Örnek:

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

Ayrıca Bakınız

FileFindNext, FileFindClose