Lectura de ficheros en Common

 

Buenos días. Tengo un script que escribe en un fichero(un bloc de notas txt) en la carpeta Common(C:\Users\Usuario\AppData\Roaming\MetaQuotes\Terminal\Common\Files) las cotizaciones de diferentes divisas. Sin embargo, cuando quiero leer ese archivo desde otro programa, como R, me da error.

El error únicamente se da cuando intento leer un archivo que ha sido manipulado por mql5, es decir, si en la carpeta Common me creo directamente un archivo bloc de notas y me escribo una matriz, o lo que sea, R me lo lee sin ningun problema. En cambio, cuando hago que mi script escriba en ese mismo archivo, o cuando el script crea un nuevo archivo, no puedo leerlo desde R, y estoy seguro de que me da error porque mql5 ha escrito en él. También me pasa en otras carpetas con archivos que hayan sido escritos por mql5.

Este es un código básico para hacer pruebas de escritura de ficheros

void OnStart()

  {


int file_handle=FileOpen("alga.txt",FILE_WRITE|FILE_TXT|FILE_COMMON);

for(int i=0;i<3;i++){

   FileWrite(file_handle,i+" "+(i+3)+" "+(i+6));

}



FileClose(file_handle);



   

  }


Y este es el error que me da R:

Warning messages:

1: In read.table("C:/Users/Usuario/AppData/Roaming/MetaQuotes/Terminal/Common/Files/alga.txt",  :

  line 1 appears to contain embedded nulls

2: In read.table("C:/Users/Usuario/AppData/Roaming/MetaQuotes/Terminal/Common/Files/alga.txt",  :

  line 2 appears to contain embedded nulls

3: In read.table("C:/Users/Usuario/AppData/Roaming/MetaQuotes/Terminal/Common/Files/alga.txt",  :

  line 3 appears to contain embedded nulls

4: In read.table("C:/Users/Usuario/AppData/Roaming/MetaQuotes/Terminal/Common/Files/alga.txt",  :

  line 4 appears to contain embedded nulls

5: In read.table("C:/Users/Usuario/AppData/Roaming/MetaQuotes/Terminal/Common/Files/alga.txt",  :

  line 5 appears to contain embedded nulls

6: In scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :

  embedded nul(s) found in input


Este es el codigo de R:

W<-read.table("C:/Users/Usuario/AppData/Roaming/MetaQuotes/Terminal/Common/Files/alga.txt",header=FALSE,sep="")

Como he dicho, esa misma linea de codigo me abre sin problemas archivos de la carpeta Common que no hayan sido manipulados por mql5, pero siempre que intento abrir algo manipulado por mql5 me da error. ¿Alguien sabe como puede arreglarse?

Gracias

 
Hola, 
Prueba agregando la bandera FILE_SHARE_READ, que tiene ese proposito
Quedaria asi:

int file_handle=FileOpen("alga.txt",FILE_WRITE|FILE_TXT|FILE_COMMON|FILE_SHARE_READ );

Por cierto, no olvides que en el foro, se debe poner codigo en las etiquetas correctas
Saludos!
 
La bandera que te han dado debería funcionarte, sino tendrás que solicitar un soporte oficial. 
Razón de la queja: