Работа с файлами.

 

Произошли трудности с:

#import "kernel32.dll"
int _lopen(string path,int of);
int _lcreat(string path,int attrib);
int _llseek(int handle,int offset,int origin);
int _lread(int handle,string buffer,int bytes);
int _lwrite(int handle,string buffer,int bytes);
int _lclose(int handle);

#import
А именно пытаюсь записать файл, но никаких ошибок и тем более файлов - нет:
void WriteFile(string path,string buffer)
  {
   int count=StringLen(buffer);
   int result;
   int handle=_lopen(path,2);
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   if(handle<0)
     {
      handle=_lcreat(path,0);
      //+------------------------------------------------------------------+
      //|                                                                  |
      //+------------------------------------------------------------------+
      if(handle<0)
        {
         Print("Ошибка создания файла ",path);
         return;
        }
      result=_lclose(handle);
     }
   handle=_lopen(path,2);
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   if(handle<0)
     {
      Print("Ошибка открытия файла ",path);
      return;
     }
   result=_llseek(handle,0,0);
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   if(result<0)
     {
      Print("Ошибка установки указателя");
      return;
     }
   result=_lwrite(handle,buffer,count);
   if(result<0)
      Print("Ошибка записи в файл ",path," ",count," байт");
   result=_lclose(handle);
   if(result<0)
      Print("Ошибка закрытия файла ",path);
  }
 
а у меня проблема со стандартной функцией FileOpen() открытия файла, постоянно выдает ошибку открытия файла
Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
sergey1294:
а у меня проблема со стандартной функцией FileOpen() открытия файла, постоянно выдает ошибку открытия файла

Моя тема очень актуальна, не могу никак записать файл в нестандартный каталог, тишина полнейшая.
 
Vladon:
Моя тема очень актуальна, не могу никак записать файл в нестандартный каталог, тишина полнейшая.
строки в MQL юникодные (2 байта на символ), а функции kernel32.dll ансишные (1 байт на символ). Используйте байтовый массив и функцию StringToCharArray для вызова ансишных функций
 
sergey1294:
а у меня проблема со стандартной функцией FileOpen() открытия файла, постоянно выдает ошибку открытия файла

оформляйте заявку в сервисдеск с кодом для воспроизведения ошибки
 

Вот написал проверочный код для работы со стандартной функцией открытия файла, все время возвращает ошибку. Хотелось бы услышать комментарий разработчиков.

//+------------------------------------------------------------------+
//|                                                запись в файл.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

input int        Magic=1000008;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   Print("Открываем файл ","Фаил_"+(string)Magic+"_"+_Symbol+".csv");
   int handle=FileOpen("Фаил_"+(string)Magic+"_"+_Symbol+".csv",FILE_CSV|FILE_READ,';');
   Print("handle = ",handle);
   if(handle<0)
     {
      Print("Ошибка № - ",GetLastError()," открытия файла");
     }
   else
     {
      Print("Закрываем данные в файл");
      uint byte=FileWrite(handle,"Проверка записи в файл");
      Print("функция FileWrite() вернула ",byte," байт");
      Print("Закрываем файл");
      FileClose(handle);
      Print("Файл закрыт");
     }
  }
//+------------------------------------------------------------------+

Запись из лога

CL      0       запись в файл (EURUSD,M5)       10:54:32        Открываем файл Фаил_1000008_EURUSD.csv
PK      0       запись в файл (EURUSD,M5)       10:54:32        handle = -1
LL      0       запись в файл (EURUSD,M5)       10:54:32        Ошибка № - 5004 открытия файла
RE      0       запись в файл (EURUSD,M5)       10:54:33        Открываем файл Фаил_1000008_EURUSD.csv
ER      0       запись в файл (EURUSD,M5)       10:54:33        handle = -1
EF      0       запись в файл (EURUSD,M5)       10:54:33        Ошибка № - 5004 открытия файла
DO      0       запись в файл (EURUSD,M5)       10:54:37        Открываем файл Фаил_1000008_EURUSD.csv
OD      0       запись в файл (EURUSD,M5)       10:54:37        handle = -1
CP      0       запись в файл (EURUSD,M5)       10:54:37        Ошибка № - 5004 открытия файла
HI      0       запись в файл (EURUSD,M5)       10:54:42        Открываем файл Фаил_1000008_EURUSD.csv
KN      0       запись в файл (EURUSD,M5)       10:54:42        handle = -1
KI      0       запись в файл (EURUSD,M5)       10:54:42        Ошибка № - 5004 открытия файла
RR      0       запись в файл (EURUSD,M5)       10:54:42        Открываем файл Фаил_1000008_EURUSD.csv
EQ      0       запись в файл (EURUSD,M5)       10:54:42        handle = -1
IS      0       запись в файл (EURUSD,M5)       10:54:42        Ошибка № - 5004 открытия файла
CL      0       запись в файл (EURUSD,M5)       10:54:43        Открываем файл Фаил_1000008_EURUSD.csv
PK      0       запись в файл (EURUSD,M5)       10:54:43        handle = -1
PL      0       запись в файл (EURUSD,M5)       10:54:43        Ошибка № - 5004 открытия файла
PE      0       запись в файл (EURUSD,M5)       10:54:44        Открываем файл Фаил_1000008_EURUSD.csv
CR      0       запись в файл (EURUSD,M5)       10:54:44        handle = -1
OF      0       запись в файл (EURUSD,M5)       10:54:44        Ошибка № - 5004 открытия файла
MO      0       запись в файл (EURUSD,M5)       10:54:45        Открываем файл Фаил_1000008_EURUSD.csv
JD      0       запись в файл (EURUSD,M5)       10:54:45        handle = -1
JP      0       запись в файл (EURUSD,M5)       10:54:45        Ошибка № - 5004 открытия файла
CI      0       запись в файл (EURUSD,M5)       10:54:45        Открываем файл Фаил_1000008_EURUSD.csv
PN      0       запись в файл (EURUSD,M5)       10:54:45        handle = -1
LI      0       запись в файл (EURUSD,M5)       10:54:45        Ошибка № - 5004 открытия файла
QR      0       запись в файл (EURUSD,M5)       10:54:45        Открываем файл Фаил_1000008_EURUSD.csv
FQ      0       запись в файл (EURUSD,M5)       10:54:45        handle = -1
FS      0       запись в файл (EURUSD,M5)       10:54:45        Ошибка № - 5004 открытия файла
JL      0       запись в файл (EURUSD,M5)       10:54:46        Открываем файл Фаил_1000008_EURUSD.csv
MK      0       запись в файл (EURUSD,M5)       10:54:46        handle = -1
IM      0       запись в файл (EURUSD,M5)       10:54:46        Ошибка № - 5004 открытия файла
DF      0       запись в файл (EURUSD,M5)       10:54:46        Открываем файл Фаил_1000008_EURUSD.csv
OM      0       запись в файл (EURUSD,M5)       10:54:46        handle = -1
OF      0       запись в файл (EURUSD,M5)       10:54:46        Ошибка № - 5004 открытия файла
MO      0       запись в файл (EURUSD,M5)       10:54:47        Открываем файл Фаил_1000008_EURUSD.csv
JD      0       запись в файл (EURUSD,M5)       10:54:47        handle = -1
FP      0       запись в файл (EURUSD,M5)       10:54:47        Ошибка № - 5004 открытия файла
MI      0       запись в файл (EURUSD,M5)       10:54:49        Открываем файл Фаил_1000008_EURUSD.csv
JN      0       запись в файл (EURUSD,M5)       10:54:49        handle = -1
JI      0       запись в файл (EURUSD,M5)       10:54:49        Ошибка № - 5004 открытия файла
KR      0       запись в файл (EURUSD,M5)       10:54:50        Открываем файл Фаил_1000008_EURUSD.csv
HQ      0       запись в файл (EURUSD,M5)       10:54:50        handle = -1
LS      0       запись в файл (EURUSD,M5)       10:54:50        Ошибка № - 5004 открытия файла
QL      0       запись в файл (EURUSD,M5)       10:54:50        Открываем файл Фаил_1000008_EURUSD.csv
FK      0       запись в файл (EURUSD,M5)       10:54:50        handle = -1
FM      0       запись в файл (EURUSD,M5)       10:54:50        Ошибка № - 5004 открытия файла
HF      0       запись в файл (EURUSD,M5)       10:54:51        Открываем файл Фаил_1000008_EURUSD.csv
KM      0       запись в файл (EURUSD,M5)       10:54:51        handle = -1
OF      0       запись в файл (EURUSD,M5)       10:54:51        Ошибка № - 5004 открытия файла
NO      0       запись в файл (EURUSD,M5)       10:54:51        Открываем файл Фаил_1000008_EURUSD.csv
ID      0       запись в файл (EURUSD,M5)       10:54:51        handle = -1
IP      0       запись в файл (EURUSD,M5)       10:54:51        Ошибка № - 5004 открытия файла
EI      0       запись в файл (EURUSD,M5)       10:54:52        Открываем файл Фаил_1000008_EURUSD.csv
RN      0       запись в файл (EURUSD,M5)       10:54:52        handle = -1
FJ      0       запись в файл (EURUSD,M5)       10:54:52        Ошибка № - 5004 открытия файла
GS      0       запись в файл (EURUSD,M5)       10:54:52        Открываем файл Фаил_1000008_EURUSD.csv
LP      0       запись в файл (EURUSD,M5)       10:54:52        handle = -1
LS      0       запись в файл (EURUSD,M5)       10:54:52        Ошибка № - 5004 открытия файла
RL      0       запись в файл (EURUSD,M5)       10:54:53        Открываем файл Фаил_1000008_EURUSD.csv
EK      0       запись в файл (EURUSD,M5)       10:54:53        handle = -1
IM      0       запись в файл (EURUSD,M5)       10:54:53        Ошибка № - 5004 открытия файла
DF      0       запись в файл (EURUSD,M5)       10:54:53        Открываем файл Фаил_1000008_EURUSD.csv
OM      0       запись в файл (EURUSD,M5)       10:54:53        handle = -1
OF      0       запись в файл (EURUSD,M5)       10:54:53        Ошибка № - 5004 открытия файла
OO      0       запись в файл (EURUSD,M5)       10:54:54        Открываем файл Фаил_1000008_EURUSD.csv
DD      0       запись в файл (EURUSD,M5)       10:54:54        handle = -1
PP      0       запись в файл (EURUSD,M5)       10:54:54        Ошибка № - 5004 открытия файла
MI      0       запись в файл (EURUSD,M5)       10:54:54        Открываем файл Фаил_1000008_EURUSD.csv
JN      0       запись в файл (EURUSD,M5)       10:54:54        handle = -1
JJ      0       запись в файл (EURUSD,M5)       10:54:54        Ошибка № - 5004 открытия файла
DS      0       запись в файл (EURUSD,M5)       10:54:55        Открываем файл Фаил_1000008_EURUSD.csv
OP      0       запись в файл (EURUSD,M5)       10:54:55        handle = -1
KS      0       запись в файл (EURUSD,M5)       10:54:55        Ошибка № - 5004 открытия файла
OL      0       запись в файл (EURUSD,M5)       10:54:56        Открываем файл Фаил_1000008_EURUSD.csv
DK      0       запись в файл (EURUSD,M5)       10:54:56        handle = -1
DM      0       запись в файл (EURUSD,M5)       10:54:56        Ошибка № - 5004 открытия файла
IF      0       запись в файл (EURUSD,M5)       10:54:56        Открываем файл Фаил_1000008_EURUSD.csv
NM      0       запись в файл (EURUSD,M5)       10:54:56        handle = -1
JG      0       запись в файл (EURUSD,M5)       10:54:56        Ошибка № - 5004 открытия файла
DP      0       запись в файл (EURUSD,M5)       10:54:57        Открываем файл Фаил_1000008_EURUSD.csv
OG      0       запись в файл (EURUSD,M5)       10:54:57        handle = -1
OP      0       запись в файл (EURUSD,M5)       10:54:57        Ошибка № - 5004 открытия файла
NI      0       запись в файл (EURUSD,M5)       10:54:57        Открываем файл Фаил_1000008_EURUSD.csv
IN      0       запись в файл (EURUSD,M5)       10:54:57        handle = -1
EJ      0       запись в файл (EURUSD,M5)       10:54:57        Ошибка № - 5004 открытия файла
MS      0       запись в файл (EURUSD,M5)       10:54:58        Открываем файл Фаил_1000008_EURUSD.csv
JP      0       запись в файл (EURUSD,M5)       10:54:58        handle = -1
JS      0       запись в файл (EURUSD,M5)       10:54:58        Ошибка № - 5004 открытия файла
CL      0       запись в файл (EURUSD,M5)       10:54:58        Открываем файл Фаил_1000008_EURUSD.csv
PK      0       запись в файл (EURUSD,M5)       10:54:58        handle = -1
DM      0       запись в файл (EURUSD,M5)       10:54:58        Ошибка № - 5004 открытия файла
JF      0       запись в файл (EURUSD,M5)       10:54:59        Открываем файл Фаил_1000008_EURUSD.csv
MM      0       запись в файл (EURUSD,M5)       10:54:59        handle = -1
MG      0       запись в файл (EURUSD,M5)       10:54:59        Ошибка № - 5004 открытия файла
PP      0       запись в файл (EURUSD,M5)       10:54:59        Открываем файл Фаил_1000008_EURUSD.csv
CG      0       запись в файл (EURUSD,M5)       10:54:59        handle = -1
GP      0       запись в файл (EURUSD,M5)       10:54:59        Ошибка № - 5004 открытия файла
QI      0       запись в файл (EURUSD,M5)       10:55:00        Открываем файл Фаил_1000008_EURUSD.csv
FN      0       запись в файл (EURUSD,M5)       10:55:00        handle = -1
FJ      0       запись в файл (EURUSD,M5)       10:55:00        Ошибка № - 5004 открытия файла
GS      0       запись в файл (EURUSD,M5)       10:55:00        Открываем файл Фаил_1000008_EURUSD.csv
LP      0       запись в файл (EURUSD,M5)       10:55:00        handle = -1
HD      0       запись в файл (EURUSD,M5)       10:55:00        Ошибка № - 5004 открытия файла
FM      0       запись в файл (EURUSD,M5)       10:55:01        Открываем файл Фаил_1000008_EURUSD.csv
QJ      0       запись в файл (EURUSD,M5)       10:55:01        handle = -1
QM      0       запись в файл (EURUSD,M5)       10:55:01        Ошибка № - 5004 открытия файла
LF      0       запись в файл (EURUSD,M5)       10:55:01        Открываем файл Фаил_1000008_EURUSD.csv
GM      0       запись в файл (EURUSD,M5)       10:55:01        handle = -1
CG      0       запись в файл (EURUSD,M5)       10:55:01        Ошибка № - 5004 открытия файла
GP      0       запись в файл (EURUSD,M5)       10:55:02        Открываем файл Фаил_1000008_EURUSD.csv
LG      0       запись в файл (EURUSD,M5)       10:55:02        handle = -1
LP      0       запись в файл (EURUSD,M5)       10:55:02        Ошибка № - 5004 открытия файла
QI      0       запись в файл (EURUSD,M5)       10:55:02        Открываем файл Фаил_1000008_EURUSD.csv
FN      0       запись в файл (EURUSD,M5)       10:55:02        handle = -1
RJ      0       запись в файл (EURUSD,M5)       10:55:02        Ошибка № - 5004 открытия файла
LS      0       запись в файл (EURUSD,M5)       10:55:03        Открываем файл Фаил_1000008_EURUSD.csv
GP      0       запись в файл (EURUSD,M5)       10:55:03        handle = -1
GD      0       запись в файл (EURUSD,M5)       10:55:03        Ошибка № - 5004 открытия файла
FM      0       запись в файл (EURUSD,M5)       10:55:03        Открываем файл Фаил_1000008_EURUSD.csv
QJ      0       запись в файл (EURUSD,M5)       10:55:03        handle = -1
MM      0       запись в файл (EURUSD,M5)       10:55:03        Ошибка № - 5004 открытия файла
MF      0       запись в файл (EURUSD,M5)       10:55:04        Открываем файл Фаил_1000008_EURUSD.csv
JM      0       запись в файл (EURUSD,M5)       10:55:04        handle = -1
JG      0       запись в файл (EURUSD,M5)       10:55:04        Ошибка № - 5004 открытия файла
DP      0       запись в файл (EURUSD,M5)       10:55:05        Открываем файл Фаил_1000008_EURUSD.csv
OG      0       запись в файл (EURUSD,M5)       10:55:05        handle = -1
CQ      0       запись в файл (EURUSD,M5)       10:55:05        Ошибка № - 5004 открытия файла
GJ      0       запись в файл (EURUSD,M5)       10:55:06        Открываем файл Фаил_1000008_EURUSD.csv
LI      0       запись в файл (EURUSD,M5)       10:55:06        handle = -1
LJ      0       запись в файл (EURUSD,M5)       10:55:06        Ошибка № - 5004 открытия файла
QS      0       запись в файл (EURUSD,M5)       10:55:06        Открываем файл Фаил_1000008_EURUSD.csv
FP      0       запись в файл (EURUSD,M5)       10:55:06        handle = -1
JD      0       запись в файл (EURUSD,M5)       10:55:06        Ошибка № - 5004 открытия файла
DM      0       запись в файл (EURUSD,M5)       10:55:07        Открываем файл Фаил_1000008_EURUSD.csv
OJ      0       запись в файл (EURUSD,M5)       10:55:07        handle = -1
OM      0       запись в файл (EURUSD,M5)       10:55:07        Ошибка № - 5004 открытия файла
GF      0       запись в файл (EURUSD,M5)       10:55:08        Открываем файл Фаил_1000008_EURUSD.csv
LM      0       запись в файл (EURUSD,M5)       10:55:08        handle = -1
HG      0       запись в файл (EURUSD,M5)       10:55:08        Ошибка № - 5004 открытия файла
EP      0       запись в файл (EURUSD,M5)       10:55:08        Открываем файл Фаил_1000008_EURUSD.csv
RG      0       запись в файл (EURUSD,M5)       10:55:08        handle = -1
RQ      0       запись в файл (EURUSD,M5)       10:55:08        Ошибка № - 5004 открытия файла
LJ      0       запись в файл (EURUSD,M5)       10:55:09        Открываем файл Фаил_1000008_EURUSD.csv
GI      0       запись в файл (EURUSD,M5)       10:55:09        handle = -1
CJ      0       запись в файл (EURUSD,M5)       10:55:09        Ошибка № - 5004 открытия файла
JS      0       запись в файл (EURUSD,M5)       10:55:09        Открываем файл Фаил_1000008_EURUSD.csv
MP      0       запись в файл (EURUSD,M5)       10:55:09        handle = -1
MD      0       запись в файл (EURUSD,M5)       10:55:09        Ошибка № - 5004 открытия файла
PM      0       запись в файл (EURUSD,M5)       10:55:09        Открываем файл Фаил_1000008_EURUSD.csv
CJ      0       запись в файл (EURUSD,M5)       10:55:09        handle = -1
ON      0       запись в файл (EURUSD,M5)       10:55:09        Ошибка № - 5004 открытия файла
FG      0       запись в файл (EURUSD,M5)       10:55:10        Открываем файл Фаил_1000008_EURUSD.csv
QL      0       запись в файл (EURUSD,M5)       10:55:10        handle = -1
QG      0       запись в файл (EURUSD,M5)       10:55:10        Ошибка № - 5004 открытия файла
LP      0       запись в файл (EURUSD,M5)       10:55:10        Открываем файл Фаил_1000008_EURUSD.csv
GG      0       запись в файл (EURUSD,M5)       10:55:10        handle = -1
CQ      0       запись в файл (EURUSD,M5)       10:55:10        Ошибка № - 5004 открытия файла
Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
sergey1294:

Вот написал проверочный код для работы со стандартной функцией открытия файла, все время возвращает ошибку. Хотелось бы услышать комментарий разработчиков.

Запись из лога



открываете с флагом FILE_READ, и пытаетесь в него записать?
 
mql5:
открываете с флагом FILE_READ, и пытаетесь в него записать?

Добавлю - есть такой раздел Флаги открытия файлов, в котором сказано:

Есть некоторые особенности работы при указании флагов чтения и записи:

  • Если указан FILE_READ – делается попытка открытия уже существующего файла. Если файл не существует, то открыть файл не получится, новый файл не создается.
  • Если FILE_READ|FILE_WRITE – создаётся новый файл если файл с таким именем отсутствует.
  • Если FILE_WRITE –  файл создается заново с нулевым размером.

При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ.

 
mql5:
открываете с флагом FILE_READ, и пытаетесь в него записать?
вот блин, скопировал строку для чтения записи, извиняюсь.
 
Будет ли реализована стандартная функция FileOpenHistory ?
 
Urain:
Будет ли реализована стандартная функция FileOpenHistory ?
Нет, история прямо доступна через CopyXXX функции. Мы больше не даем доступа к исходным файлам истории.
Причина обращения: