Errores, fallos, preguntas - página 1687

 
Pregunta. El tamaño de una clase vacía en MQL es de 16 bytes (en un sistema de 64 bits). ¿Por qué? 8 bytes deben ser ocupados por el puntero a la tabla virtual (según la documentación, todas las clases lo tienen en MQL). ¿Y los 8 bytes restantes son ocupados por qué?
 
Colegas, ¿alguien se ha encontrado con este problema? El terminal fue actualizado a biuld 1430 esta mañana. Y como coincidencia, ayer he reescrito mi Asesor Experto para trabajar con archivos a través de la biblioteca estándar (antes no era del todo exitoso usando operaciones de archivo estándar), pero no lo he probado - lo he pospuesto para mañana. Y aquí está el resultado: el Asesor Experto no encuentra un archivo durante la prueba - la función FileIsExist siempre devuelve falso. No sé dónde está el fallo, si en mis modificaciones o en la actualización. El caso es que la documentación dice que el archivo debe estar ubicado en la carpeta MQL5/Tester/Files durante las pruebas. Sin embargo, en la realidad, el camino es diferente: ...{Roaming\MetaQuotes\Tester\N...alguna basura hexagonal...\NAgent-127.0.0.1-3000\MQL5\Files. Es decir, al menos hay un error en la documentación. Pero lo principal es que cuando se inician las pruebas, el archivo colocado allí manualmente se borra de la carpeta especificada, aunque mi función FileIsExist está prescrita en OnInit y es la primera en acceder a los archivos. Así que tengo una pregunta: ¿dónde debe ubicarse un archivo durante las pruebas? ¿Y qué sucede en absoluto?
 
BlackTomcat:
Colegas, ¿alguien se ha encontrado con este problema? El terminal fue actualizado a biuld 1430 esta mañana. Y como coincidencia, ayer he reescrito mi Asesor Experto para trabajar con archivos a través de la biblioteca estándar (antes no era del todo exitoso usando operaciones de archivo estándar), pero no lo he probado - lo he pospuesto para mañana. Y aquí está el resultado: el Asesor Experto no encuentra un archivo durante la prueba - la función FileIsExist siempre devuelve falso. No sé dónde está el fallo, si en mis modificaciones o por la actualización. El caso es que la documentación dice que el archivo debe estar ubicado en la carpeta MQL5/Tester/Files durante las pruebas. Sin embargo, en la realidad, el camino es diferente: ...{Roaming\MetaQuotes\Tester\N...alguna cosa hexagonal...\NAgent-127.0.0.1-3000\MQL5\Files. Es decir, al menos hay un error en la documentación. Pero lo principal es que cuando se inician las pruebas, el archivo colocado allí manualmente se borra de la carpeta especificada, aunque mi función FileIsExist está prescrita en OnInit y es la primera en acceder a los archivos. Así que tengo una pregunta: ¿dónde debe ubicarse un archivo durante las pruebas? ¿Y qué sucede en absoluto?
Bueno, el problema se solucionó utilizando la bandera FILE_COMMON.
El archivo se ubicará en la carpeta ...{Roaming\MetaQuotes\Terminal\Common\Files. Durante las pruebas no se borra de allí y se puede leer normalmente.
 

Pregunta: ¿Cómo puedo encontrar mis mensajes en el foro MQL4? Hace unos dos años se creó un hilo con código adjunto y este código se ha vuelto interesante, pero la búsqueda en el foro no dice nada. Si entro en mis publicaciones, este tema no está. (¿borrado?)

 

¿Cómo puedo saber si una macro ha sido utilizada o no?

 
fxsaber:

¿Cómo puedo saber si una macro ha sido utilizada o no?

así:

#ifndef __MY_MACROS__   // если макрос не использован
   #define __MY_MACROS__
//----------------------------------------
// тут ваш код использующий макрос
//----------------------------------------
#endif // __MY_MACROS__
 
coderex:

así:

Me refería a lo otro.
#define  MACROS(A) A

void Func()
{
  MACROS(A) // Если закомментировать, то макрос ни разу не использовался
}

// Вот здесь хотелось бы понять, использовался ли хоть раз макрос или нет.
 
Ayúdame a averiguar cómo hacer una comprobación en la fuente si OnInit está definido o no?
 
fxsaber:
Me refería a otra cosa.
La más sencilla es un contador de llamadas a macros en una variable global, sobrescrito desde la propia macro.
 
Sergei Vladimirov:
El más sencillo es un contador de llamadas a macros en una variable global, reescrito desde la propia macro.
Existe una variante de este tipo, pero no es adecuada para todas las macros, por desgracia.