class A { public:
int m;
A() { Alert("A"); m=1; }
};
class B { public:
B() { Alert("B"); static A a; Alert("a.m==",a.m); Alert("&a==",&a);}
};
B b;
voidOnStart()
{
};
Al ejecutarlo, obtenemos el siguiente orden de alertas:
B a.m==0 &a==0 A
Es decir, la variable estática no ha sido inicializada todavía en el momento de acceder a ella. Incluso el puntero es nulo, se acaba de saltar y seguimos con seguridad.
O bien se inicializa la variable y se sigue adelante o se aborta la compilación con un error.
Pero cuando se produce una recursión de clases mutuamente referenciadas, la compilación debe ser abortada.
¿Cómo puedo conectar un archivo de matriz a mi EA?
En primer lugar, el script escribe un array:
Conecto el archivo en el EA:
Al compilar, errores:
'??????????????????????????t????...' - el identificador es demasiado largo mas.dat 1 1
'' - símbolo desconocido mas.dat 1 3015
Tu script debería generar un archivo mas.mqh, que contendrá un array de uchar-types con bytes de tus datos. Por ejemplo, si el archivo tiene un tamaño de tres bytes, el contenido del archivo mas.mqh debe ser el siguiente:
uchar mass[3] = {25, 127, 89};
La masa de la matriz generada es la que debes utilizar en tu programa.
Es poco probable que tengas que leer un archivo de un disco decenas de miles de veces, para eso está la caché del disco, aunque no sé si se utiliza en este caso concreto, pero deberías comprobarlo y medirlo antes de inventar muletillas.
Muchas gracias por la solución aportada. Todo funciona.
Sería mucho más rápido leer todo el archivo de matriz en la memoria, y luego trabajar con él.
¿Cómo puedo conectar un archivo de matriz a mi EA?
En primer lugar, el script escribe un array:
Conecto el archivo en el EA:
Al compilar, errores:
'??????????????????????????t????...' - el identificador es demasiado largo mas.dat 1 1
'' - símbolo desconocido mas.dat 1 3015
Graves errores con las variables estáticas. Considera este código:
Al ejecutarlo, obtenemos el siguiente orden de alertas:
B
a.m==0
&a==0
A
Es decir, la variable estática no ha sido inicializada todavía en el momento de acceder a ella. Incluso el puntero es nulo, se acaba de saltar y seguimos con seguridad.
O bien se inicializa la variable y se sigue adelante o se aborta la compilación con un error.
Pero cuando se produce una recursión de clases mutuamente referenciadas, la compilación debe ser abortada.
¿Cómo puedo conectar un archivo de matriz a mi EA?
En primer lugar, el script escribe un array:
Conecto el archivo en el EA:
Al compilar, errores:
'??????????????????????????t????...' - el identificador es demasiado largo mas.dat 1 1
'' - símbolo desconocido mas.dat 1 3015
Tu script debería generar un archivo mas.mqh, que contendrá un array de uchar-types con bytes de tus datos. Por ejemplo, si el archivo tiene un tamaño de tres bytes, el contenido del archivo mas.mqh debe ser el siguiente:
La masa de la matriz generada es la que debes utilizar en tu programa.
No creo que el optimizador tenga que abrir, leer y cerrar el archivo decenas de miles de veces.
En el modo de depuración de datos históricos, MQLInfoInteger(MQL_VISUAL_MODE) siempre devuelve true.