una código que me funciona bien en mql4, no me funciona en mql5.. y no veo por qué

 

Esta función es parte de mi EA, y pasa los datos de dos archivos csv a arrays. En mql4 funciona bien, pero en mql5 no va, parece que FileIsEnding no funciona. FileOpen funciona bien, porque el handle es correcto. Pero a partir de While(!FileIsEnding) ya no busca el texto por toda la csv.  En las hojas csv la primera columna tiene en cada fila el texto que coincide con el nombre y ya en las siguientes columnas otros datos, luego después de While(!FileIsEnding) el contador cont debería contar todas las filas con datos, pero este contador cont se queda igual a 1. Por favor si alguien me ayuda lo agradecería, en mql4 me manejo bien pero estoy empezando en mql5.

La razón de que no funcione en mql5 debe ser por el uso de  FileIsEnding o FileReadString(handle).

Gracias


bool Inicializamos_arrays_seniales(string archivo, string &array[][])

   { 
      int cont=0;
      string nombre;
      
      if(archivo=="weakness.csv")
         nombre="WEAKNESS";
      if(archivo=="strenght.csv")
         nombre="STRENGHT";
      if(archivo!="weakness.csv" && archivo!="strenght.csv")
         {
            Alert("Nos salimos porque los archivos no son ",archivo);
            return false;
         }

      int handle=FileOpen(archivo,FILE_CSV|FILE_READ);
           
      if(handle<0)
         Alert("ERROR HANDLE ",archivo);
       
      while(!FileIsEnding(handle))
         {
            // Rellenamos los datos de los ficheros en los arrays
            
            string x=FileReadString(handle);    
            cont++;
 
            if(x==nombre)
               {
                  cont++;
                  Alert("cont= ",cont);
                  if(nombre=="WEAKNESS" || nombre=="STRENGHT")
                     {
                           ArrayResize(array,cont);       
                           array[cont-1,0]=x;               //escribimos cont-1  porque el array debe comenzar desde el cero
                           for(int i=1;i<=75;i++)
                           array[cont-1,i]=FileReadString(handle);   //ponemos los datos de las cabeceras de la excel en el array en su primera                                                        //dimension las filas y en su segunda dimension las columnas
                     }
               }
         }   
      FileClose(handle);
      
      return true;
   }
 
ricardofelipesch:

Esta función es parte de mi EA, y pasa los datos de dos archivos csv a arrays. En mql4 funciona bien, pero en mql5 no va, parece que FileIsEnding no funciona. FileOpen funciona bien, porque el handle es correcto. Pero a partir de While(!FileIsEnding) ya no busca el texto por toda la csv.  En las hojas csv la primera columna tiene en cada fila el texto que coincide con el nombre y ya en las siguientes columnas otros datos, luego después de While(!FileIsEnding) el contador cont debería contar todas las filas con datos, pero este contador cont se queda igual a 1. Por favor si alguien me ayuda lo agradecería, en mql4 me manejo bien pero estoy empezando en mql5.

La razón de que no funcione en mql5 debe ser por el uso de  FileIsEnding o FileReadString(handle).

Gracias


bool Inicializamos_arrays_seniales(string archivo, string &array[][])

   { 
      int cont=0;
      string nombre;
      
      if(archivo=="weakness.csv")
         nombre="WEAKNESS";
      if(archivo=="strenght.csv")
         nombre="STRENGHT";
      if(archivo!="weakness.csv" && archivo!="strenght.csv")
         {
            Alert("Nos salimos porque los archivos no son ",archivo);
            return false;
         }

      int handle=FileOpen(archivo,FILE_CSV|FILE_READ);
           
      if(handle<0)
         Alert("ERROR HANDLE ",archivo);
       
      while(!FileIsEnding(handle))
         {
            // Rellenamos los datos de los ficheros en los arrays
            
            string x=FileReadString(handle);    
            cont++;
 
            if(x==nombre)
               {
                  cont++;
                  Alert("cont= ",cont);
                  if(nombre=="WEAKNESS" || nombre=="STRENGHT")
                     {
                           ArrayResize(array,cont);       
                           array[cont-1,0]=x;               //escribimos cont-1  porque el array debe comenzar desde el cero
                           for(int i=1;i<=75;i++)
                           array[cont-1,i]=FileReadString(handle);   //ponemos los datos de las cabeceras de la excel en el array en su primera                                                        //dimension las filas y en su segunda dimension las columnas
                     }
               }
         }   
      FileClose(handle);
      
      return true;
   }
Buenas noches Ricardo, deberías poner esta consulta en el apartado de Asesores Expertos en el foro. 

Y el código siempre se recomienda copiarlo usando la pestaña destinada para ello (código /). Esta es la sección de discusiones generales
 
Gracias por tu comentario Enrique, ya camtio mi consulta al apartado de Asesores Expertos. Referente al código, no sé a qué pestaña te refieres... donde está?
 
ricardofelipesch:
Gracias por tu comentario Enrique, ya camtio mi consulta al apartado de Asesores Expertos. Referente al código, no sé a qué pestaña te refieres... donde está?
bool Inicializamos_arrays_seniales(string archivo, string &array[][])

   { 
      int cont=0;
      string nombre;
      
      if(archivo=="weakness.csv")
         nombre="WEAKNESS";
      if(archivo=="strenght.csv")
         nombre="STRENGHT";
      if(archivo!="weakness.csv" && archivo!="strenght.csv")
         {
            Alert("Nos salimos porque los archivos no son ",archivo);
            return false;
         }

      int handle=FileOpen(archivo,FILE_CSV|FILE_READ);
           
      if(handle<0)
         Alert("ERROR HANDLE ",archivo);
       
      while(!FileIsEnding(handle))
         {
            // Rellenamos los datos de los ficheros en los arrays
            
            string x=FileReadString(handle);    
            cont++;
 
            if(x==nombre)
               {
                  cont++;
                  Alert("cont= ",cont);
                  if(nombre=="WEAKNESS" || nombre=="STRENGHT")
                     {
                           ArrayResize(array,cont);       
                           array[cont-1,0]=x;               //escribimos cont-1  porque el array debe comenzar desde el cero
                           for(int i=1;i<=75;i++)
                           array[cont-1,i]=FileReadString(handle);   //ponemos los datos de las cabeceras de la excel en el array en su primera                                                        //dimension las filas y en su segunda dimension las columnas
                     }
               }
         }   
      FileClose(handle);
      
      return true;
   }
Archivos adjuntos:
Razón de la queja: