FileFindNext 関数
この関数は、FileFindFirst関数によって開始した検索を続行します。
データ型と構成・戻り値
bool FileFindNext(①, ②);
戻り値は、処理が成功した場合は true、それ以外は falseが返されます。
引数 [2]
FileFindNext関数は 2個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | search_handle | long | - | - | FileFindFirst関数によって取得された検索ハンドル。 |
② | returned_filename | string& | - | - | 次の検索で見つかったファイル名、サブフォルダ名を受け取る変数。成功した場合、ファイル名またはサブフォルダ名を取得します。 |
使用例
FileFindNext関数によるファイルとフォルダの検索
FileFindNext関数を使って指定したフォルダ内に存在するファイル名とサブフォルダ名をすべて検索します。
今回検索の対象にするフォルダは「…\Terminal\〇〇〇\MQL4\Files」とします。
コード
// FileFindNext関数によるファイルとフォルダの検索
#property strict
void OnInit() {
string filter = "*"; // 検索フィルタ
string file_name; // 検索ファイル名を受信
long handle;
int i=1, errorcode;
Print("「", filter, "」で検索");
handle = FileFindFirst(filter, file_name); // 指定フォルダ内を検索
if(handle != INVALID_HANDLE) {
do {
ResetLastError(); // エラーコードのリセット
FileIsExist(file_name); // 見つかったファイル名で存在チェック
errorcode = GetLastError(); // 指定した名前がフォルダの場合はエラーコード5019が返されます
if(errorcode == 5019) {
Print( i, "つ目:", file_name, "(フォルダ)");
} else {
Print( i, "つ目:", file_name, "(ファイル)");
}
i++;
} while(FileFindNext(handle, file_name) == true);
FileFindClose(handle);
} else {
Print("ファイル無し");
}
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
結果は各自がフォルダ内に置いてあるファイル名やフォルダ名によって違ってきますので、上の結果は参考として確認してください。