Errores, fallos, preguntas - página 2332

 
Vladimir Pastushak:

Según la ayuda, debería devolver false si el archivo no existe.

Estrictamente hablando, no se deduce de la documentación que el resultado de FileGetInteger(FileName,FILE_EXISTS) sea necesariamente un bool

Pero la lógica es adornada en cualquier caso

https://www.mql5.com/ru/forum/1111/page1788#comment_4071879

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.02.08
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

El motor del sitio no resalta la macro en rojo.

 
Vladimir Pastushak:

bool file_exists=(bool)FileGetInteger(FileName,FILE_EXISTS);

En cualquier caso devuelve true si hay archivo o no, y el error 5019 si no hay archivo. Según la ayuda, debería devolver false si no hay ningún archivo.

bool file_exists=FileIsExist(FileName); Funciona correctamente

La forma correcta sería

bool file_exists=FileGetInteger(FileName,FILE_EXISTS)==1; 
 
Vladimir Pastushak:

Lo tengo en mt 5

Por favor, proporcione el código para estudiar, a través de PM

 
fxsaber:

El motor del sitio web no resalta la macro en rojo.

Sólo debería estar resaltado en rojo si la macro fue definida previamente

#define  PRICEST_TICK_PRICE bid
//...
#define PRICEST_TICK_PRICE ask

Si no, ¿cómo se sabe que una macro no ha sido definida antes? Y no es una anulación accidental

A veces incluso funciona en el MetaEditor:


 
A100:

El color sólo debe resaltarse si la macro fue definida previamente

de lo contrario, ¿cómo sabemos que la macro no fue definida previamente? y esto no es una anulación accidental

Entonces hay que definir qué es una macro destacada y qué no lo es.

Pensaba que todas las macros estaban resaltadas. Al parecer, la norma es diferente.

 
fxsaber:

Entonces hay que decidir qué es una macro destacada y qué no lo es.

Creía que todas las macros estaban resaltadas. Al parecer, la norma es diferente.

Creo que hay que decidir para qué sirve el resaltado, si para la belleza o para la información. Por el momento no hay normas como tales:

En general, es conveniente que si un identificador ya ha sido definido y no es indefendible, se resalte en color

 
A100:

Creo que hay que decidir el objetivo de la iluminación: ¿es por belleza o por información? Por el momento no hay normas como tales:

Para mí, la regla general es: la macro siempre es roja.

 
fxsaber:

Para mí la regla es conveniente: la macro siempre es roja.

¿Cuál es la conveniencia aquí?
#define PRICEST_TICK_PRICE bid

El inconveniente es claro: no se puede saber si el identificador PRICEST_TICK_PRICE estaba previamente definido o no

Y por qué debería hacerlo aquí (3)

//Ln 240
#define  PRICEST_TICK_PRICE ask //(1)
#undef  PRICEST_TICK_PRICE     //(2)
void OnStart()
{
        int PRICEST_TICK_PRICE; //(3)
}

ser rojo? Y si no es rojo aquí (3), ¿por qué debería serlo en (1)?

Regla práctica: un identificador es rojo sólo si se ha definido previamente y no se ha deshecho

 

A100:
А в чем здесь удобство?

Veo que se trata de una macro. En este caso no es necesario ver #define lateralmente.

El inconveniente es claro: es imposible entender si el identificador PRICEST_TICK_PRICE estaba previamente definido o no.

Nunca intenté determinarlo por el color. Además, si todo está en #ifdef, MQL4 y MQL5 pueden tener colores diferentes. Lo más fácil es hacer ALT+G sobre el nombre de la macro para ver si está o no.

Regla práctica: el identificador es rojo sólo si previamente (!) fue definido

Me sentiría cómodo si la macro se menciona al menos una vez en alguna parte de #define, #ifdef, #undef, etc. Aunque no esté definido.