Errores, fallos, preguntas - página 127

 
xeon:
El compilador no detecta la ausencia del segundo signo igual como un error.

No tiene por qué, su código no contiene un error.

int a = 0;
if(a=1){Print("TEST");}

y es idéntico a este código.

int a = 0;
a=1;
if(a){Print("TEST");}
 
xeon:
El compilador no detecta la ausencia de un segundo signo igual como un error.
for(int i=0;i<total_deal;i++)
        {
         //--- try to get deals ticket
         if(ticket=HistoryDealGetTicket(i)) // Предупреждение к этой строке
           {
            Deal.Ticket(ticket);

Pero da una advertencia, al menos para mi código así:

'DealInfo.mqh' DealInfo.mqh 1 1
la expresión no es booleana Shou Historia.mq5 60 19
0 error(es), 1 advertencia(s) 1 1
 
Urain:

No tiene por qué, su código no contiene un error.

y es idéntico a este código.


Y en vano, por ejemplo, el estudio detecta este código como un error.

Además, entonces parece que este código

int a = 0;
a=1;
if(a){Print("TEST");}

es idéntico a éste:

int a = 19;
if(a=14){Print("TEST");}

digamos que 0 = falso, 1 = verdadero, entonces ¿a qué equivalen los otros dígitos? 2,3,4, ...... :-)

Imho este enfoque no conduce a nada bueno, sólo añade la posibilidad innecesaria de mirar a través del error.

 
xeon:

En mi opinión, este enfoque no sirve de nada, sólo añade una oportunidad extra para ver el error.

La razón de añadir un valor no booleano es para que el usuario pueda ver lo que está haciendo.

 

Si guardo el conjunto en el terminal (en el gráfico) y luego lo abro en el probador o en el terminal, todo va bien. Pero si lo guardo en el probador y luego lo abro en la terminal, todos los valores de las variables que no son de tipo cadena se muestran en abracadabra. Si hago clic en Aceptar, cuando vuelva a abrir la ventana de parámetros, se verá bien, todos los parámetros serán reemplazados por los nuevos correctamente, excepto los booleanos. Todo lo que era troue se convierte en falsa... En el probador, el conjunto guardado desde el probador se abre correctamente.

 

Perdón por la molestia, el error del que escribí antes aún no se ha solucionado. Cuando se ejecuta el indicador dado en la descripción de la función CopySpread , el historial de spreads se dibuja con un agujero. El orificio siempre cubre el periodo que va desde que se inicia el terminal hasta que se inicia el indicador. Parece que los spreads que vienen del servidor con cada nuevo tick no se registran en el historial de spreads.Gracias.

 

Recibo advertencias del compilador:

conversión implícita de enum
posible pérdida de datos debido a la conversión de tipos

al utilizar esta cadena:

ENUM_POSITION_TYPE posType=PositionGetInteger(POSITION_TYPE);

¿Qué pasa aquí?

Lo he encontrado: hay que utilizar el

long posType=PositionGetInteger(POSITION_TYPE);

Entonces, otra pregunta. ¿Funcionará correctamente esta construcción?

if(posType==POSITION_TYPE_BUY)

cuando posType se define como long?

 
ENUM_POSITION_TYPE posType=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
 
gpwr:

Recibo advertencias del compilador:

conversión implícita de enum
posible pérdida de datos debido a la conversión de tipos

al utilizar esta cadena:

¿Qué pasa aquí?

Lo he encontrado: hay que utilizar el

Entonces, otra pregunta. ¿Funcionará correctamente esta construcción?

cuando posType se define como long?

funcionará, es una advertencia de conversión de tipo, puedes ignorarla
 
AlexinSergey:

Perdón por la molestia, el error del que escribí antes aún no se ha solucionado. Cuando se ejecuta el indicador dado en la descripción de la función CopySpread , el historial de spreads se dibuja con un agujero. El orificio siempre cubre el periodo que va desde que se inicia el terminal hasta que se inicia el indicador. Parece que los spreads que vienen del servidor con cada nuevo tick no se registran en el historial de spreads.Gracias.

Gracias, nos ocuparemos del ejemplo.
Razón de la queja: