Errores, fallos, preguntas - página 304

 
Yedelkin:

Tomo esta función de MQL5 Reference / Language Basics / Functions

Pero el compilador imprime '(' - se espera un punto y coma

¿Qué significa?

He comprobado mediante el ejemplo de la edición (sustituyendo el primer parámetro pasado). Todo está bien, no se ha producido ningún error.

El ejemplo de ayuda correcto es el siguiente

//function linfunc
double linfunc(double a, double b)
{
return(a + b);
}

Personalmente, sólo pude obtener un mensaje como el tuyo en una prueba, cuando sustituí el primer paréntesis rizado por uno redondo. Entonces recibí este mensaje

'(' - se espera un punto y coma

Si el número de paréntesis (derecho e izquierdo) no coincide, se genera la siguiente advertencia

';' - token inesperado
'}' - se espera el punto y coma

PS

Si intento compilar el ejemplo actual (con una "a" rusa) el compilador genera un error como debería

'a' - identificador no declarado

 
Yedelkin:

No te inventes cosas para los demás que no existen :) El símbolo se arregló enseguida en el editor, como algo natural. El error se produce cuando el cursor está delante del paréntesis de apertura, no antes del carácter "a". Siendo humanamente atento, debería haberlo notado en el comentario del compilador citado.

La pregunta sigue siendo: https://www.mql5.com/ru/forum/1111/page304#comment_48136

Explicación. La pregunta ha surgido, no porque me esté sentando a compilar estúpidamente ejemplos del libro de referencia, sino porque aparece este mensaje de error cuando creo una función de trabajo. El ejemplo de la referencia no cambia nada. Incluso puede eliminar la descripción de los argumentos de la cabecera, pero el problema persiste.

Sí, tiene un error, probablemente no relacionado con este ejemplo ....

Tienes que mirar todo el código...

 
Yedelkin:

Tomo esta función de MQL5 Reference / Language Basics / Functions

Pero el compilador imprime '(' - se espera un punto y coma

¿Qué significa?

Hemos arreglado la letra del ejemplo, pero no hemos podido conseguir este error exacto. ¿Puede proporcionar el código completo para que podamos reproducirlo?
 
Rosh:
La letra del ejemplo se ha arreglado, pero ese es el error exacto que no podíamos conseguir. ¿Puede proporcionar el código completo para que podamos reproducirlo?

¡Gracias a todos por su atención a la pregunta! La cuestión es que no hay un "código completo" que pueda iniciar un error. Acabo de decidir comprobar la afirmación de un libro de texto de C++ de que el valor de una variable externa, que se pasa a una función como argumento, no puede ser cambiado por la función (o algo así - bueno, desde el ámbito de la autoeducación). He creado una función primitiva para comprobar - el compilador genera un error. He consultado la referencia, he copiado el ejemplo, he corregido el símbolo en el ejemplo y sigue el mismo error. He intentado insertar la función en una plantilla de script y en la plantilla de Asesor Experto, el error no cambia. De hecho, el "código completo" consiste únicamente en la función del ejemplo, que se ha insertado en el cuerpo vacío de la función onTick() o onStart().

Por la noche colgaré dicho código pseudocompleto, pero no sé si sirve de algo. También intentaré sobrecargar el ordenador, ya que se ha utilizado en modo "ir a dormir y volver" durante una semana.

 
Rosh:
La letra del ejemplo ha sido corregida, pero no ha sido posible obtener este error exacto. ¿Puede proporcionar el código completo para que podamos reproducirlo?
void OnStart()
  {
   double                       // тип возвращаемого значения
   linfunc (double a, double b)  // имя функции и список параметров
     {
                               // составной оператор
      return (a + b);           // возвращаемое значение
     }
  }
Se reproduce de alguna manera así.
 
Swan:
De alguna manera esto se reproduce así.

Pues bien, estás tratando de definir una función dentro de otra - esto es inaceptable. La sección de llamada a la función se lo indica explícitamente:

Una función puede declararse o describirse en cualquier parte del programa de forma global, es decir, fuera de otras funciones. Una función no puede ser declarada o descrita dentro de otra función.

 
Rosh:

Pues bien, estás tratando de definir una función dentro de otra - esto es inaceptable. La sección de llamada a la función lo dice explícitamente:

Gracias por la aclaración. Exactamente mi caso.

El conocimiento teórico no garantiza la corrección de su aplicación en la práctica :) Mi error.

 

Construye 392.

Al borrar un gráfico, éste no aparece en la lista de borrados. Resulta que la opción de menú Archivo>Abrir borrados no funciona.

Accidentalmente cerré (en lugar de desplegar) el gráfico, esperaba verlo en los borrados, y entonces ...

 
Ashes:

Construye 392.

Al borrar un gráfico, éste no aparece en la lista de borrados. Resulta que la opción de menú Archivo>Abrir borrados no funciona.

Accidentalmente cerré (en lugar de desplegar) el gráfico, esperando verlo en los borrados, y luego ...

Marca la casilla.


 

Algunos agentes no se inician de forma remota, aquí está el registro:

LE      0       5.0.6.84        14:51:19        login (build 392)
HN      2       Tester  14:51:20        initial synchronization error
JF      2       5.0.6.84        14:51:20        send error 10038
LJ      0       Tester  14:51:20        tester agent shutdown
KO      0       5.0.6.84        15:25:41        login (build 392)
HD      2       Tester  15:25:42        initial synchronization error
NM      0       Tester  15:25:42        tester agent shutdown
HM      0       127.0.0.1       15:36:37        login (build 392)
FK      0       Network 15:36:38        2548 bytes of optimization passes loaded
HM      0       Network 15:36:38        16 bytes of input parameters loaded
HE      0       Network 15:36:38        3788 bytes of group info loaded
GP      0       Network 15:36:38        3358 bytes of tester parameters loaded
HG      0       Network 15:36:38        2948 bytes of input parameters loaded
KL      0       Network 15:36:38        671 bytes of selected symbols loaded
CD      0       Tester  15:36:38        expert file added: Experts\MyExperts\ExpCrossEMA.ex5. 133395 bytes loaded
QS      0       Tester  15:36:38        initial deposit 5000.00 USD, leverage 1:100
PJ      0       Tester  15:36:38        successfully initialized
NP      0       Network 15:36:38        146 Kb of total initialization data received
MG      0       Tester  15:36:38        optimization pass 393 started
LR      0       TesterAgent     15:36:38        Intel Core2 Duo  E8200 @ 2.66 GHz, 2047 MB, PR49
DI      0       Symbols 15:36:40        EURUSD: symbol synchronized, 2904 bytes of symbol info received
QS      0       History 15:36:40        EURUSD: load 704 Kb of history data to synchronize
OF      0       History 15:36:40        EURUSD: history synchronized from 2009.01.02 to 2011.01.31
KK      0       History 15:36:42        EURUSD: contains 366322 M1 records of beginning data from 2009.01.02 10:00 to 2009.12.31 18:59
CH      0       History 15:36:42        EURUSD,M5: history cache reserved for estimated 150171 bars
JO      0       History 15:36:42        EURUSD,M5: history begins from 2009.01.02 10:00
NK      0       Tester  15:36:42        EURUSD,M5 (Alpari-Demo): every tick generating
KS      0       Tester  15:36:42        EURUSD,M5: testing of Experts\MyExperts\ExpCrossEMA.ex5 from 2010.01.01 00:00 to 2011.01.01 00:00 started with inputs:
PN      0       Tester  15:36:42          Inp_Signal_CrossEMA_FastPeriod=30
GG      0       Tester  15:36:42          Inp_Signal_CrossEMA_SlowPeriod=18
DS      0       Tester  15:36:42          Inp_Expert_Title=ExpCrossEMA
MK      0       Tester  15:36:42          Inp_Money_FixLot_Percent=10
FM      0       Tester  15:36:42          Inp_Money_FixLot_Lots=0.1
GO      0       ExpCrossEMA (EURUSD,M5) 15:36:42        2010.01.01 00:00:00   CSignalCrossEMA::ValidationSettings: period of slow EMA must be greater than period of fast EMA
RF      0       ExpCrossEMA (EURUSD,M5) 15:36:42        2010.01.01 00:00:00   OnInit: error signal parameters
DM      2       Tester  15:36:42        tester stopped because OnInit failed
FG      0       Network 15:36:42        16 bytes of tester parameters received
PR      0       Tester  15:36:42        optimization pass 1817 started
FK      0       Tester  15:36:42        initial deposit 5000.00 USD, leverage 1:100
FL      0       Tester  15:36:44        EURUSD,M5 (Alpari-Demo): every tick generating
GE      0       Tester  15:36:44        EURUSD,M5: testing of Experts\MyExperts\ExpCrossEMA.ex5 from 2010.01.01 00:00 to 2011.01.01 00:00 started with inputs:
GE      0       Tester  15:36:44          Inp_Signal_CrossEMA_FastPeriod=28
KM      0       Tester  15:36:44          Inp_Signal_CrossEMA_SlowPeriod=49
DJ      0       Tester  15:36:44          Inp_Expert_Title=ExpCrossEMA
IM      0       Tester  15:36:44          Inp_Money_FixLot_Percent=10
RF      0       Tester  15:36:44          Inp_Money_FixLot_Lots=0.1
GO      0       Tester  15:36:45        output to log disabled
IO      0       Tester  15:37:10        OnTester result 0

Aunque a través de localhost este agente funciona localmente.

¿Cuál podría ser la razón?