FileFindFirst

この関数は、指定されたフィルターに従って、ディレクトリのファイルまたはサブディレクトリの検索を開始します。

long  FileFindFirst(
   const string   file_filter,          // String – search filter
   string&        returned_filename,    // Name of the file or subdirectory found
   int            common_flag=0         // Defines the search
   );

パラメーター

file_filter

[in]検索フィルター。ファイルを検索する\ Filesディレクトリに関連するサブディレクトリ(またはネストされたサブディレクトリのシーケンス)をフィルタで指定できます。

返されたファイル名

[出力]返されたパラメーター。成功した場合、最初に見つかったファイルまたはサブディレクトリの名前が配置されます。ファイル名(拡張子を含む)のみが返され、検索フィルターで指定されているかどうかに関係なく、ディレクトリとサブディレクトリは含まれません。

common_flag

[in] ファイルの場所を決定するフラグ。common_flag = FILE_COMMONの場合、ファイルはすべてのクライアント端末\ Terminal \ Common \ Filesの共有フォルダーにあります。それ以外の場合、ファイルはローカルフォルダーにあります。

戻り値

検索されたオブジェクトのハンドルを返します。これは、FileFindNext()関数によるファイルおよびサブディレクトリのさらなるソートに使用する必要があります。または、フィルタに対応するファイルおよびサブディレクトリがない場合(特定の場合-ディレクトリが空の場合)INVALID_HANDLE。検索後、FileFindClose()関数を使用してハンドルを閉じる必要があります。

注意

セキュリティ上の理由から、ファイルの操作はMQL4言語で厳密に制御されています。ファイル操作がMQL4手段を使用して実行されるファイルは、ファイルサンドボックスの外部に配置できません。

例:

//— 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 loop, 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!”);
  }

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">