forked from rosh/MQL5Book
67 lines
2.3 KiB
MQL5
67 lines
2.3 KiB
MQL5
//+------------------------------------------------------------------+
| |
//| FileFind.mq5 |
| |
//| Copyright 2021, MetaQuotes Ltd. |
| |
//| https://www.mql5.com |
| |
//+------------------------------------------------------------------+
| |
#include "..\..\Include\PRTF.mqh"
| |
| |
//+------------------------------------------------------------------+
| |
//| Helper function to build a list of directory |
| |
//+------------------------------------------------------------------+
| |
bool DirList(const string filter, string &result[], bool common = false)
| |
{
| |
string found[1];
| |
long handle = FileFindFirst(filter, found[0]);
| |
if(handle == INVALID_HANDLE) return false;
| |
do
| |
{
| |
if(ArrayCopy(result, found, ArraySize(result)) != 1) break;
| |
}
| |
while(FileFindNext(handle, found[0]));
| |
// sometimes FileFindNext sets _LastError to 5002 (dunno why)
| |
// so clear it up to prevent interference with analysis of reasonable error codes
| |
ResetLastError();
| |
FileFindClose(handle);
| |
return true;
| |
}
| |
| |
//+------------------------------------------------------------------+
| |
//| Script program start function |
| |
//+------------------------------------------------------------------+
| |
void OnStart()
| |
{
| |
string found; // receiving variable
| |
// start searching and obtain the handle
| |
long handle = PRTF(FileFindFirst("MQL5Book/*", found)); // 1
| |
if(handle != INVALID_HANDLE)
| |
{
| |
do
| |
{
| |
Print(found);
| |
/*
| |
output at least (the order may change):
| |
| |
ansi1252.txt
| |
unicode1.txt
| |
unicode2.txt
| |
unicode3.txt
| |
utf8.txt
| |
*/
| |
}
| |
while(FileFindNext(handle, found));
| |
FileFindClose(handle);
| |
}
| |
| |
string list[];
| |
// try to request elements w/o extension
| |
PRTF(DirList("*.", list)); // false / WRONG_FILENAME(5002)
| |
| |
// more loose condition requests elements with no extension
| |
// or 1-symbol extension and it works
| |
if(PRTF(DirList("*.?", list))) // true
| |
{
| |
ArrayPrint(list);
| |
// example output: "MQL5Book\" "Tester\"
| |
}
| |
}
| |
//+------------------------------------------------------------------+
|