Скачать MetaTrader 5

Запись файла в общую папку (РЕШЕНО)

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vladislav Andruschenko
95859
Vladislav Andruschenko  

Всем привет,

Ребят, столкнулся с такой проблемой, пытаюсь записать файл в общую папку

функция простая:

void WriteFile(string path,string buffer)
  {
  //--- Общая папка всех клиентских терминалов
   string common_data_path=TerminalInfoString(TERMINAL_COMMONDATA_PATH);
     int Handle,// Файловый описатель
   Stl;                            // Стиль вертикальной линии
   string File_Name=common_data_path+"\\Files\\"+path;        // Имя файла
   string      Obj_Name;                    // Имя объекта
//--------------------------------------------------------------- 3 --
   Handle=FileOpen(File_Name,FILE_CSV|FILE_WRITE|FILE_SHARE_WRITE|FILE_COMMON,";");// Открытие файла
   if(Handle<0) // Неудача при открытии файла
     {
      if(GetLastError()==4103) // Если файла не существует,..
         Print("Нет файла с именем ",File_Name);//.. извещаем трейдера 
      else                             // При любой другой ошибке..
      Print("Ошибка при открытии файла ",GetLastError()," ",File_Name);//..такое сообщ
     }
//--------------------------------------------------------------- 4 --
   FileWrite(Handle,buffer);
//--------------------------------------------------------------- 8 --
   FileClose(Handle);                // Закрываем файл
  
  
  
  
  
  }

 

получаю ошибку:

2014.09.26 14:42:56.414 EXP _EURUSD,M5: Ошибка при открытии файла 0 C:\Users\Владислав\AppData\Roaming\MetaQuotes\Terminal\Common\Files\Copy.txt

 в чем может быть трабла? 

Vladislav Andruschenko
95859
Vladislav Andruschenko  

спасибо разобрался.

оказывает не нужно писать весь путь к файлу при  использовании флага FILE_COMMON:

 

void WriteFile(string path,string buffer)
  {
  //--- Общая папка всех клиентских терминалов
   string common_data_path=TerminalInfoString(TERMINAL_COMMONDATA_PATH);
     int Handle,// Файловый описатель
   Stl;                            // Стиль вертикальной линии
   string File_Name=path;        // Имя файла
   string      Obj_Name;                    // Имя объекта
//--------------------------------------------------------------- 3 --
   Handle=FileOpen(File_Name,FILE_CSV|FILE_WRITE|FILE_SHARE_WRITE|FILE_COMMON,";");// Открытие файла
   if(Handle<0) // Неудача при открытии файла
     {
      if(GetLastError()==4103) // Если файла не существует,..
         Print("Нет файла с именем ",File_Name);//.. извещаем трейдера 
      else                             // При любой другой ошибке..
      Print("Ошибка при открытии файла ",GetLastError()," ",File_Name);//..такое сообщ
     }
//--------------------------------------------------------------- 4 --
   FileWrite(Handle,buffer);
//--------------------------------------------------------------- 8 --
   FileClose(Handle);                // Закрываем файл
  
  
  
  
  
  }
Olegs Kucerenko
12088
Olegs Kucerenko  

Дополню.

При вызове в условии

if(GetLastError()==4103)

переменная обнуляется.Следовательно

Print("Ошибка при открытии файла ",GetLastError()," ",File_Name);

будет выдавать 0.

Vladislav Andruschenko
95859
Vladislav Andruschenko  
Спасибо. 
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий