//+------------------------------------------------------------------+
//| Demo_FolderDelete.mq5 |
//| Copyright 2011, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
//--- 描述
#property description "The script shows a sample use of FolderDelete()."
#property description "First two folders are created; one of them is empty, the second one contains a file."
#property description "When trying to delete a non-empty folder, an error is returned and a warning is shown."
//--- 启动脚本时显示输入参数对话框
#property script_show_inputs
//--- 输入参数
input string firstFolder="empty"; // 空文件夹
input string secondFolder="nonempty";// 将会创建文件的文件夹
string filename="delete_me.txt"; // 将在secondFolder文件夹创建的文件名称
//+------------------------------------------------------------------+
//| 脚本程序启动函数 |
//+------------------------------------------------------------------+
void OnStart()
{
//--- 在这里写下文件句柄
int handle;
//--- 找出我们正在工作的文件夹
string working_folder=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Files";
//--- 调试信息
PrintFormat("working_folder=%s",working_folder);
//--- 试图创建MQL5\Files路径相关的空文件夹
if(FolderCreate(firstFolder,0)) // 0 意味着我们在程序端的本地文件夹工作
{
//--- 向已创建的文件夹输入全路径
PrintFormat("Folder %s has been created",working_folder+"\\"+firstFolder);
//--- 重置错误代码
ResetLastError();
}
else
PrintFormat("Failed to create folder %s. Error code %d",working_folder+"\\"+firstFolder, GetLastError());
//--- 现在使用FileOpen()函数创建一个非空文件夹
string filepath=secondFolder+"\\"+filename; // 形成我们想要打开写在不存在文件夹中的路径文件
handle=FileOpen(filepath,FILE_WRITE|FILE_TXT); // 这种情况下FILE_WRITE标识是必须的,请见Help查询FileOpen
if(handle!=INVALID_HANDLE)
PrintFormat("File %s has been opened for reading",working_folder+"\\"+filepath);
else
PrintFormat("Failed to create file %s in folder %s. Error code=",filename,secondFolder, GetLastError());
Comment(StringFormat("Prepare to delete folders %s and %s", firstFolder, secondFolder));
//--- 短暂停顿5秒来阅读图表中的信息
Sleep(5000); // Sleep() 不能用在指标中!
//--- 显示询问用户的对话框
int choice=MessageBox(StringFormat("Do you want to delete folders %s and %s?", firstFolder, secondFolder),
"Deleting folders",
MB_YESNO|MB_ICONQUESTION); // 两个按钮 - "Yes" 和 "No"
//--- 根据选定的变量运行一个行为
if(choice==IDYES)
{
//--- 从图表删除评论
Comment("");
//--- 添加信息到“专家”日志
PrintFormat("Trying to delete folders %s and %s",firstFolder, secondFolder);
ResetLastError();
//--- 删除空文件夹
if(FolderDelete(firstFolder))
//--- 由于文件夹为空,应该会出现以下信息
PrintFormat("Folder %s has been successfully deleted",firstFolder);
else
PrintFormat("Failed to delete folder %s. Error code=%d", firstFolder, GetLastError());
ResetLastError();
//--- 删除包含文件的文件夹
if(FolderDelete(secondFolder))
PrintFormat("Folder %s has been successfully deleted", secondFolder);
else
//--- 由于文件夹包含文件,应该会出现下列信息
PrintFormat("Failed to delete folder %s. Error code=%d", secondFolder, GetLastError());
}
else
Print("Deletion canceled");
//---
}
|