Working with files.

 

There have been difficulties with:

#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
Namely trying to write a file, but no errors, much less files:
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);
  }
 
I have a problem with the standard FileOpen() function opening a file, it keeps giving an error opening the file
Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
sergey1294:
I have a problem with the standard FileOpen() function, it keeps giving me an open file error

My topic is very relevant, I can't write a file to a non-standard directory in any way, complete silence.
 
Vladon:
My topic is very relevant, I can't write a file to a non-standard directory, the silence is complete.
strings in MQL are unicode (2 bytes per character), and the functions of kernel32.dll are ansish (1 byte per character). Use byte array and function StringToCharArray to call unicode functions
 
sergey1294:
I have a problem with the standard FileOpen() function opening a file, I keep getting an open file error

Please contact Service Desk with the code to reproduce the error
 

Here I wrote a test code to work with the standard file open function, it returns an error all the time. I would like to hear the developers comment.

 //+------------------------------------------------------------------+
//|                                                запись в файл.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 ( "Файл закрыт" );
     }
  }
//+------------------------------------------------------------------+

Log entry

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:

Here's a test code to work with the standard file opening function, keeps returning an error. I'd like to hear the developers comments.

Log entry



Open with FILE_READ flag and try to write into it?
 
mql5:
Do you open with the FILE_READ flag and try to write to it?

I should add - there is a section called Open File Flags which says

There are some peculiarities of operation when specifying read and write flags:

  • If FILE_READ is specified - an attempt is made to open an already existing file. If the file does not exist, the file cannot be opened, a new file is not created.
  • If FILE_READ|FILE_WRITE - a new file is created if there is no file with that name.
  • If FILE_WRITE - the file is re-created with zero size.

When opening a file, the FILE_WRITE flag must be set and/or the FILE_READ flag must be set.

 
mql5:
open with FILE_READ flag , and try to write to it?
Oh man, I copied the read write line, sorry.
 
Will the standard FileOpenHistory function be implemented ?
 
Urain:
Will the standard FileOpenHistory function be implemented ?
No, the history is directly accessible via the CopyXXX function. We no longer give access to the original history files.
Reason: