Lavorare con i file.

Vladislav Andruschenko  

Ci sono state difficoltà con:

#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
Vale a dire cercando di scrivere un file, ma nessun errore, tanto meno i file:
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);
  }
Vladislav Andruschenko  
sergey1294:
Ho un problema con la funzione standard FileOpen(), continua a darmi un errore di file aperto

Il mio argomento è molto rilevante, non posso scrivere un file in una directory non standard in nessun modo, silenzio completo.
Ilyas  
Vladon:
Il mio argomento è molto pertinente, non posso scrivere un file in una directory non standard, il silenzio è completo.
Le stringhe in MQL sono unicode (2 byte per carattere), e le funzioni di kernel32.dll sono ansish (1 byte per carattere). Usare array di byte e funzione StringToCharArray per chiamare funzioni unicode
Ilyas  
sergey1294:
Ho un problema con la funzione standard FileOpen() che apre un file, continuo a ricevere un errore di file aperto

Contatta il Service Desk con il codice per riprodurre l'errore
Sergey Gritsay  

Qui ho scritto un codice di prova per lavorare con la funzione di apertura file standard, restituisce sempre un errore. Mi piacerebbe sentire il commento degli sviluppatori.

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

Voce di registro

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
Ilyas  
sergey1294:

Ecco un codice di prova per lavorare con la funzione standard di apertura dei file, continua a restituire un errore. Mi piacerebbe sentire i commenti degli sviluppatori.

Voce del registro



Aprire con il flag FILE_READ e provare a scriverci dentro?
Rashid Umarov  
mql5:
Aprite con il flag FILE_READ e provate a scriverci?

Dovrei aggiungere - c'è una sezione chiamata Open File Flags che dice

Ci sono alcune particolarità di funzionamento quando si specificano i flag di lettura e scrittura:

  • Se viene specificato FILE_READ - viene fatto un tentativo di aprire un file già esistente. Se il file non esiste, il file non può essere aperto, un nuovo file non viene creato.
  • Se FILE_READ|FILE_WRITE - viene creato un nuovo file se non esiste un file con quel nome.
  • Se FILE_WRITE - il file viene ricreato con dimensione zero.

Quando si apre un file, il flag FILE_WRITE deve essere impostato e/o il flag FILE_READ deve essere impostato.

Sergey Gritsay  
mql5:
aperto con il flag FILE_READ e provare a scriverci?
Oh cavolo, ho copiato la linea di lettura e scrittura, scusate.
Renat Fatkhullin  
Urain:
La funzione standard FileOpenHistory sarà implementata?
No, la cronologia è direttamente accessibile tramite la funzione CopyXXX. Non diamo più accesso ai file originali della storia.
Motivazione: