FileCopy 関数
この関数は、指定したフォルダの中にある、指定したファイルをコピーして、指定したフォルダにペーストします。
コピー元、ペースト先のフォルダは 2つのみで、引数②と④でコピー元とペースト先のフォルダを設定します。その際、ファイル名を変更することもできます。また、コピー元とペースト先のファイル名が同じで、引数④に「FILE_REWRITE」を選択していた場合、コピー元のファイルで上書きされます。
指定できる 2つのフォルダは 、
① …\Terminal\〇〇〇\MQL4\Files
② …\Terminal\Common\Files
です。①の「〇〇〇」はインストールしたMT4の任意の文字列です。
MQL4でファイル操作を実行するファイルは、セキュリティ上の理由でこれら 2つのフォルダ以外に置くことはできません。
上記フォルダは、MT4のメニュー「ファイル」→「データフォルダを開く」で展開されたフォルダから、①のフォルダは展開したフォルダの中に「MQL4」フォルダ があるので、その中に「Files」フォルダがあります。②のフォルダは展開したフォルダの1つ上の階層に「Common」フォルダがあるので、その中に「Files」フォルダがあります。
データ型と構成・戻り値
bool FileCopy(①, ②, ③, ④);
戻り値は、処理が成功した場合は true、それ以外は falseが返されます。
引数 [4]
FileCopy関数は 4個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | src_file_name | const string | - | - | コピーするファイル名。 |
② | common_flag | int | - | - | 引数①のファイルを処理するフォルダの位置。 「FILE_COMMON」の時、 …\Terminal\Common\Files フォルダが指定されます。 「FILE_COMMON」以外の時、 …\Terminal\〇〇〇\MQL4\Files フォルダが指定されます。 |
③ | dst_file_name | const string | - | - | コピー後のファイル名。 違うファイル名を設定した場合、ペースト先のファイル名が変更されます。 |
④ | mode_flags | int | - | - | ファイルオープニングフラグ。次の 2つのみ設定可能。 「FILE_REWRITE」:ペースト先のフォルダにコピーするファイルと同じファイル名があった場合、上書きします。 「FILE_COMMON」:コピーファイルのペースト先に「…\Terminal\Common\Files」フォルダが指定されます。 「FILE_REWRITE」と「FILE_COMMON」以外を設定した場合は、コピーファイルのペースト先に「…\Terminal\〇〇〇\MQL4\Files」フォルダが指定されます。 |
使用例
FileCopy関数によるファイルのコピー
FileCopy関数を使って指定したフォルダのファイルをコピー および コピーしたファイルの名前の変更をします。
コピー元 および ペースト先のフォルダを次のようにします。
「MQL4ファイルフォルダ」: …\Terminal\〇〇〇\MQL4\Files
「共通ファイルフォルダ」:…\Terminal\Common\Files
処理内容
①「MQL4ファイルフォルダ」の「mql1.csv」ファイルをコピーして「共通ファイルフォルダ」へペーストします。その際、ファイル名を「common1.csv」に変更します。
②「共通ファイルフォルダ」の「common2.csv」ファイルをコピーして「MQL4ファイルフォルダ」へペーストします。その際、ファイル名を「mql2.csv」に変更します。
③「共通ファイルフォルダ」の「common3.csv」ファイルをコピーして「MQL4ファイルフォルダ」へペーストします。その際、ファイル名を「mql3.csv」に変更して、既にペースト先フォルダ内に存在する「mql3.csv」ファイルを上書きします。
「MQL4ファイルフォルダ」には「mql1.csv」、「mql3.csv」ファイル、
「共通ファイルフォルダ」には「common2.csv」「common3.csv」ファイルが
入った状態にしています。
コード
// FileCopy関数によるファイルのコピー
#property strict
void OnInit() {
bool tf1 = FileCopy("mql1.csv", 0, "common1.csv", FILE_COMMON); // ①
bool tf2 = FileCopy("common2.csv", FILE_COMMON, "mql2.csv", 0); // ②
bool tf3 = FileCopy("common3.csv", FILE_COMMON, "mql3.csv", FILE_REWRITE); // ③
Print("ファイルコピーの成否①:", tf1);
Print("ファイルコピーの成否②:", tf2);
Print("ファイルコピーの成否③:", tf3);
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
処理前後の各フォルダのファイルは次のようになります。処理前のファイルは、それぞれファイルの更新日時が違いますので、処理後のファイルの日付でコピーのみか上書きコピーされているかが分かります。今回の場合「MQL4ファイルフォルダ」の「mql3.csv」ファイルがコピーしたファイルで上書きされていることが分かります。