FileSelectDialog
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] 将要显示在所选对话框窗口的文件的扩展过滤器。其他格式的文件被隐藏。
- flags
[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目录外)。
在客户端的MQL5\Files(或在测试情况下的testing_agent_directory\MQL5\Files)目录中搜索initial_dir名称。如果在标识中设置了FSD_COMMON_FOLDER,则对初始目录的搜索在所有客户端的常规文件夹中执行\Terminal\Common\Files。
过滤器参数表示有效的文件,应该在"<description 1>|<extension 1>|<description 2>|<extension 2>…“格式中设置,例如, “文本文件(*.txt)|*.txt|所有文件 (*.)|*.”。选择的第一个扩展“文本文件(*.txt)|*.txt”作为默认文件类型。
如果过滤器=NULL,则对话框窗口中所选文件的掩码为“所有文件(*.)|*.|”
如果设置了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");
}
//---
}另见
FileOpen、FileIsExist、 FileDelete、FileMove、 FolderCreate、FolderDelete、 FolderClean、 文件开始标签