FileOpen Erro 5004

 

Boa noite


      Ao executar o código , obtenho erro 5004 no 2o FileOpen , linha 498.

file1


Então resolvi inverter e passei a ter o erro na linha 500, no 2o FileOpen.


file2


Existe alguma limitação de números de arquivos que possam ser abertos simultaneamente utilizando MQL 5 ?




 
Pedro Quina:

Boa noite


      Ao executar o código , obtenho erro 5004 no 2o FileOpen , linha 498.


Então resolvi inverter e passei a ter o erro na linha 500, no 2o FileOpen.



Existe alguma limitação de números de arquivos que possam ser abertos simultaneamente utilizando MQL 5 ?




Dê um Print nas 2 variáveis, antes de executar o Read e o Write...

 
Pedro Quina:

Boa noite


Olá Pedro, tudo bem?

Bom, eu nunca tentei abrir ao mesmo tempo um mesmo arquivo para gravação e leitura. 

Eu estava lendo a documentação sobre FILE_SHARE_READ =  

Acesso compartilhado para leitura a partir de vários programas. Flag é usado em FileOpen(), mas ele não substitui a necessidade de indicar o flag FILE_WRITE e/ou FILE_READ ao abrir um arquivo.


Pelo visto não funciona abrir um arquivo para gravação e compartilhar a leitura.

Já tentou fazer assim: 


filehandleBuy=
FileOpen("robotBUY.dat",FILE_READ,FILE_WRITE|FILE_CSV|FILE_COMMON);

filehandleSell=FileOpen("robotSELL.dat",FILE_READ,FILE_WRITE|FILE_CSV|FILE_COMMON);

 
Rogerio Giannetti Torres:

Olá Pedro, tudo bem?

Bom, eu nunca tentei abrir ao mesmo tempo um mesmo arquivo para gravação e leitura. 

Eu estava lendo a documentação sobre FILE_SHARE_READ =  

Acesso compartilhado para leitura a partir de vários programas. Flag é usado em FileOpen(), mas ele não substitui a necessidade de indicar o flag FILE_WRITE e/ou FILE_READ ao abrir um arquivo.


Pelo visto não funciona abrir um arquivo para gravação e compartilhar a leitura.

Já tentou fazer assim: 


filehandleBuy=
FileOpen("robotBUY.dat",FILE_READ,FILE_WRITE|FILE_CSV|FILE_COMMON);

filehandleSell=FileOpen("robotSELL.dat",FILE_READ,FILE_WRITE|FILE_CSV|FILE_COMMON);

Eu consigo abrir apenas UM arquivo com as flags utilizadas no meu código. O que eu não consigo é abrir mais de um arquivo.

 
Pedro Quina:

Eu consigo abrir apenas UM arquivo com as flags utilizadas no meu código. O que eu não consigo é abrir mais de um arquivo.

Meu caro, você está tentando abrir o mesmo arquivo 2 vezes. O SO não vai deixar.

Por isso dei a dica do Print(), pra você sacar o que está acontecendo.

 
Pedro Quina:

Eu consigo abrir apenas UM arquivo com as flags utilizadas no meu código. O que eu não consigo é abrir mais de um arquivo.

Pedro, 

Nós  já te dissemos que você está tentado abrir o mesmo arquivo para gravação e leitura, se é isso mesmo que você deseja a sintaxe correta é mostrada abaixo.

fileHandle=FileOpen(fileName,FILE_READ|FILE_WRITE|FILE_CSV);

 
Rogerio Giannetti Torres:

Pedro, 

Nós  já te dissemos que você está tentado abrir o mesmo arquivo para gravação e leitura, se é isso mesmo que você deseja a sintaxe correta é mostrada abaixo.

Corrigindo a sintaxe:

fileHandle=FileOpen(fileName,FILE_READ|FILE_WRITE|FILE_CSV);
Abraços,
Malacarne
Razão: