FileSelectDialog

ファイルまたはフォルダーを開く/作成ダイアログを作成します。

int  FileSelectDialog(
  string  caption,              // ウィンドウヘッダ
  string  initial_dir,          // デフォルトディレクトリ
  string  filter,              // 拡張子フィルタ
  uint    flags,                // フラグの組み合わせ
  string&  filenames[],          // ファイル名の配列
  string  default_filename     // デフォルトファイル名
  );

パラメータ

caption

[in] ダイアログウィンドウヘッダ

initial_dir

[in] MQL5\Filesに早退した初期ディレクトリ名。その内容はダイアログボックスに表示されます。値がNULLの場合、ダイアログにはMQL5\Filesが表示されます。

filter

[in] 選択ダイアログウィンドウに表示されるファイルの拡張子フィルタ。他の形式のファイルは非表示です。

フラグ

[in] ダイアログウィンドウモードを定義するフラグの組み合わせ。フラグは次のように定義されます。
FSD_WRITE_FILE – ファイルを開くダイアログ
FSD_SELECT_FOLDER – フォルダのみの選択を許可する
FSD_ALLOW_MULTISELECT – 複数ファイルの選択を許可する
FSD_FILE_MUST_EXIST – 選択したファイルは存在するべきである
FSD_COMMON_FOLDER – ファイルはすべてのクライアント端末の共通フォルダ\Terminal\Common\Filesにある

filenames[]

[out] 選択したファイル/フォルダーの名前が配置される文字列の配列。

default_filename

[in] デフォルトファイル/フォルダー名。指定されている場合、名前は自動的に開いているダイアログに追加され、テスト時にfilenames[] 配列に返されます。

 

戻り値

正常に完了した場合、関数は、filenames[]で名前を取得できる選択されたファイルの数を返します。ユーザーがファイルを選択せずにダイアログを閉じると、関数は0を返します。実行に失敗した場合、 0未満の値が返されます。エラーコードは、GetLastError()を使用して取得できます。

注意事項

セキュリティ上の理由から、MQL5 言語ではファイルの扱いは厳しく制御されています。MQL5言語を用いて操作されるファイルは、ファイルサンドボックス(MQL5\Filesディレクトリ)の外に存在することは出来ません。

initial_dirの名前は、MQL5\Files(またはテストの場合はtesting_agent_directory\MQL5 \Files)のクライアント端末ディレクトリで検索されます。If FSD_COMMON_FOLDERがフラグ間で設定されている場合、初期ディレクトリの検索は、すべてのクライアント端末の共通フォルダ\Terminal\Common\Filesで行われます。

filterパラメータは有効なファイルを示すもので、「<description 1>|<extension 1>|<description 2>|<extension 2>...」形式(例:「Text files (*.txt)|*.txt|All files (*.*)|*.*」)に設定されるべきです。初めの拡張し「Text files (*.txt)|*.txt」はデフォルトファイルタイプとして選択されています。

filter=NULLの場合、ダイアログウィンドウでのファイル選択のマスクは「All Files (*.*)|*.*|」です。

default_filenameパラメータが設定されている場合は、FileSelectDialog()の呼び出しは1を返し、default_filename値辞退はビジュアルテスト以外ではfilenames[]配列にコピーされます。

FileSelectDialog() を呼び出すと、ユーザーの応答を待っている間実行スレッドがずっと中断されるため、この関数をカスタム指標で使用することはできません。各銘柄のすべての指標は単一のスレッドで実行されるため、この銘柄のすべての時間枠のすべてのチャートが一時停止されます。

例:

//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- クライアント端末の共通フォルダからダウンロードするテキストファイルの名前を取得する
  string filenames[];
  if(FileSelectDialog("Select files to download", NULL,
                      "Text files (*.txt)|*.txt|All files (*.*)|*.*",
                      FSD_ALLOW_MULTISELECT|FSD_COMMON_FOLDER, filenames, "data.txt")>0)
    {
    //--- 選択した各ファイルの名前を表示する
    int total=ArraySize(filenames);
    for(int i=0; i<total; i++)
        Print(i, ": ", filenames[i]);
    }
  else
    {
    Print("Files not selected");
    }
//---
 }

参照

FileOpenFileIsExistFileDeleteFileMoveFolderCreateFolderDeleteFolderCleanFlags of opening files