Travailler avec des fichiers.

 

Il y a eu des difficultés avec :

#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
A savoir, essayer d'écrire un fichier, mais aucune erreur, et encore moins de fichiers :
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);
  }
 
J'ai un problème avec la fonction standard FileOpen() qui ouvre un fichier, elle continue à donner une erreur en ouvrant le fichier.
Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
sergey1294:
J'ai un problème avec la fonction standard FileOpen(), elle continue à me donner une erreur d'ouverture de fichier.

Mon sujet est très pertinent, je n'arrive pas à écrire un fichier dans un répertoire non standard de quelque manière que ce soit, silence complet.
 
Vladon:
Mon sujet est très pertinent, je n'arrive pas à écrire un fichier dans un répertoire non standard, le silence est complet.
Les chaînes de caractères dans MQL sont unicode (2 octets par caractère), et les fonctions de kernel32.dll sont ansish (1 octet par caractère). Utiliser un tableau d'octets et lafonction StringToCharArray pour appeler les fonctions unicode
 
sergey1294:
J'ai un problème avec la fonction standard FileOpen() qui ouvre un fichier, je continue à obtenir une erreur d'ouverture de fichier.

Veuillez contacter le Service Desk avec le code permettant de reproduire l'erreur.
 

Ici, j'ai écrit un code de test pour travailler avec la fonction d' ouverture de fichier standard, il renvoie une erreur tout le temps. J'aimerais entendre les commentaires des développeurs.

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

Entrée de journal

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:

Voici un code de test qui fonctionne avec la fonction standard d 'ouverture de fichier, mais qui renvoie une erreur. J'aimerais entendre les commentaires des développeurs.

Entrée du journal



Ouvrir avec le drapeau FILE_READ et essayer d'écrire dedans ?
 
mql5:
Ouvrez-vous le fichier avec l'indicateur FILE_READ et essayez d'y écrire ?

Je dois ajouter qu'il y a une section appelée " Open File Flags" qui dit

Il y a quelques particularités de fonctionnement lorsqu'on spécifie des drapeaux de lecture et d'écriture :

  • Si FILE_READ est spécifié - une tentative est faite pour ouvrir un fichier déjà existant. Si le fichier n'existe pas, le fichier ne peut pas être ouvert, un nouveau fichier n'est pas créé.
  • Si FILE_READ|FILE_WRITE - un nouveau fichier est créé s'il n'existe pas de fichier portant ce nom.
  • Si FILE_WRITE - le fichier est recréé avec une taille nulle.

Lors de l'ouverture d'un fichier, l'indicateur FILE_WRITE doit être activé et/ou l'indicateur FILE_READ doit être activé.

 
mql5:
ouvert avec l'indicateur FILE_READ, et essayer d'y écrire ?
Oh mec, j'ai copié la ligne de lecture-écriture, désolé.
 
La fonction standard FileOpenHistory sera-t-elle implémentée ?
 
Urain:
La fonction standard FileOpenHistory sera-t-elle implémentée ?
Non, l'historique est directement accessible via la fonction CopyXXX. Nous ne donnons plus accès aux dossiers historiques originaux.