Русский

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

Справка MQL4 одним файлом:

FileMove

Перемещает файл из локальной или общей папки в другую папку.

bool  FileMove(
   const string  src_file_name,    // имя файла для операции перемещения
   int           common_flag,      // расположение файла
   const string  dst_file_name,    // имя файла назначения
   int           mode_flags        // способ доступа и/или расположение файла
   );

Параметры

src_file_name

[in]  Имя файла для перемещения/переименования.

common_flag

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

dst_file_name

[in]  Имя результатного файла.

mode_flags

[in] Флаги доступа. Параметр может содержать только 2 флага: FILE_REWRITE и/или FILE_COMMON - остальные флаги игнорируются. Если файл уже существует и при этом не был указан флаг FILE_REWRITE, то файл не будет переписан, и функция возвратит false.

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

В случае неудачи функция возвращает false.

Примечание

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

Если новый файл существовал, то копирование будет производиться в зависимости от наличия флага FILE_REWRITE в значении параметра mode_flags.

Пример:

//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//--- входные параметры
input string InpSrcName="data.txt";
input string InpDstName="newdata.txt";
input string InpSrcDirectory="SomeFolder";
input string InpDstDirectory="OtherFolder";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string local=TerminalInfoString(TERMINAL_DATA_PATH);
   string common=TerminalInfoString(TERMINAL_COMMONDATA_PATH);
//--- получим пути к файлам
   string src_path=InpSrcDirectory+"//"+InpSrcName;
   string dst_path=InpDstDirectory+"//"+InpDstName;
//--- проверим, существуют ли файл источника (если нет - выход)
   if(FileIsExist(src_path))
      PrintFormat("%s file exists in the %s\\Files\\%s folder",InpSrcName,local,InpSrcDirectory);
   else
     {
      PrintFormat("Error, %s source file not found",InpSrcName);
      return;
     }
//--- проверим, существует ли уже файл результата
   if(FileIsExist(dst_path,FILE_COMMON))
     {
      PrintFormat("%s file exists in the %s\\Files\\%s folder",InpDstName,common,InpDstDirectory);
      //--- файл существует, перемещение нужно проводить с флагом FILE_REWRITE
      ResetLastError();
      if(FileMove(src_path,0,dst_path,FILE_COMMON|FILE_REWRITE))
         PrintFormat("%s file moved",InpSrcName);
      else
         PrintFormat("Error! Code = %d",GetLastError());
     }
   else
     {
      PrintFormat("%s file does not exist in the %s\\Files\\%s folder",InpDstName,common,InpDstDirectory);
      //--- файл не существует, перемещение нужно проводить без флага FILE_REWRITE
      ResetLastError();
      if(FileMove(src_path,0,dst_path,FILE_COMMON))
         PrintFormat("%s file moved",InpSrcName);
      else
         PrintFormat("Error! Code = %d",GetLastError());
     }
//--- теперь файл перемещен, проверим это
   if(FileIsExist(dst_path,FILE_COMMON) && !FileIsExist(src_path,0))
      Print("Success!");
   else
      Print("Error!");
  }

Смотри также

FileIsExist()