Русский

Справочник MQL4 Файловые операции FolderCreate

FolderCreate

Создает директорию в директории Files (в зависимости от значения common_flag)

bool  FolderCreate(
   string  folder_name,       // строка с именем создаваемой папки
   int     common_flag=0      // область действия
   );

Параметры

folder_name

[in]  Имя директории, которую требуется создать. Содержит полный путь к папке.

common_flag=0

[in] Флаг, определяющий местоположение директории. Если common_flag=FILE_COMMON, то директория находится в общей папке всех клиентских терминалов \Terminal\Common\Files. В противном случае директория находится в локальной папке (MQL4\Files или MQL4\Tester\Files в случае тестирования).

Возвращаемое значение

Возвращает true в случае успеха, иначе false.

Примечание

Из соображений безопасности в языке MQL4 строго контролируется работа с файлами. Файлы, с которыми проводятся файловые операции средствами языка MQL4, не могут находиться за пределами файловой "песочницы".

Пример:

//+------------------------------------------------------------------+
//|                                            Demo_FolderCreate.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- описание
#property description "Скрипт показывает пример использования FolderCreate()."
#property description "Внешний параметр определяет папку для создания папок."
#property description "После выполнения скрипта будет создана структура папок"
 
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//--- входной параметр определяет папку, в которой работает скрипт
input bool     common_folder=false// общая папка всех терминалов
int            flag=0;              // значение флага определяет место проведения файловых операций 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string working_folder;
//--- установим значение флага, если внешний параметр common_folder==true
   if(common_folder)
     {
      flag=FILE_COMMON;
      //--- выясним папку, в которой работаем
      working_folder=TerminalInfoString(TERMINAL_COMMONDATA_PATH)+"\\MQL4\\Files";
     }
   else working_folder=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL4\\Files";
//--- папка, которую создадим в папке MQL4\Files
   string root="Folder_A";
   if(CreateFolder(working_folder,root,flag))
     {
      //--- создадим в ней дочернюю папку Child_Folder_B1
      string folder_B1="Child_Folder_B1";
      string path=root+"\\"+folder_B1;          // создадим имя папки с учетом структуры
      if(CreateFolder(working_folder,path,flag))
        {
         //--- в этой папке создадим еще 3 дочерних
         string folder_C11="Child_Folder_C11";
         string child_path=path+"\\"+folder_C11;// создадим имя папки с учетом структуры
         CreateFolder(working_folder,child_path,flag);
         //--- вторая дочерняя папка
         string folder_C12="Child_Folder_C12";
         child_path=path+"\\"+folder_C12;
         CreateFolder(working_folder,child_path,flag);
 
         //--- третья дочерняя папка
         string folder_C13="Child_Folder_C13";
         child_path=path+"\\"+folder_C13;
         CreateFolder(working_folder,child_path,flag);
        }
     }
//---
  }
//+------------------------------------------------------------------+
//| Пытается создать папку и выводит сообщения                       |
//+------------------------------------------------------------------+
bool CreateFolder(string working_folder,string folder_path,int file_flag)
  {
//--- отладочное сообщение   
   PrintFormat("folder_path=%s",folder_path);
//--- попытка создать папку относительно пути MQL4\Files
   if(FolderCreate(folder_path,file_flag))
     {
      //--- выведем полный путь до созданной папки
      PrintFormat("Cоздали папку %s",working_folder+"\\"+folder_path);
      //--- сбросим код ошибки
      ResetLastError();
      //--- вернем успех
      return true;
     }
   else
      PrintFormat("Не удалось создать папку %s. Код ошибки %d",working_folder+folder_path,GetLastError());
//--- неудачное завершение
   return false;
  }

Смотри также

FileOpen(), FolderClean(), FileCopy()