Errores, fallos, preguntas - página 2633

 

2310
Un comportamiento extraño.
Si se establece la matriz a partir del cuarto parámetro, o del quinto, sexto, etc.

void Func(int arg1, int arg2, int arg3=0, double & array[])
{
 
}

el compilador genera un error

'array' - missing default value for parameter

Reorganizo el array con el primer, o segundo, o tercer parámetro, no hay error.

void Func(int arg1, int arg2, double & array[] int arg3=0)
{
 
}


Segundo comportamiento extraño.
En el editor en F5, después de la compilación a menudo desencadena el tiempo de ejecución de la secuencia de comandos.

 
Roman:

2310
Este es un comportamiento extraño.
Si se establece la matriz a partir del cuarto parámetro, o del quinto, sexto, etc.

el compilador genera un error

Reorganizo el array con el primer, o segundo, o tercer parámetro, no hay error.


Segundo comportamiento extraño.
En el editor por F5, después de la compilación, a menudo desencadena una ejecución del programa.

Si hay un valor por defecto para uno de los parámetros, entonces todos los parámetros subsiguientes también deberían tener valores por defecto.

void Func(int arg1, int arg2, int arg3=0, double & array[]  )
{
 
}

Este fue el comportamiento desde el principio.

Y no se trata del array, sino del valor por defecto que tiene el último argumento. Todos los siguientes deben tenerlo también:

void Func(int arg1, int arg2, double & array[] int arg3=0)
{
 
}
 
Artyom Trishkin:

Si hay un valor por defecto para uno de los parámetros, entonces todos los parámetros subsiguientes también deberían tener valores por defecto.

Este fue el comportamiento desde el principio.

Y no se trata del array, sino del valor por defecto del último argumento. Todos los siguientes están obligados a tenerlo también:

Gracias por la aclaración, pero el comportamiento es extraño ))

 
Artyom Trishkin:

Así que su clasificación no es lo suficientemente buena para los blogs todavía.

¿Dónde puedo leer sobre ello? ¿Qué tipo de calificación necesita? ¿Qué hay que hacer?
 
Roman:

Gracias por la aclaración, pero el comportamiento es extraño ))

Es extraño oírte hacer esas preguntas. El manual establece claramente


Документация по MQL5: Основы языка / Функции
Документация по MQL5: Основы языка / Функции
  • www.mql5.com
Всякая задача может быть разбита на подзадачи, каждую из которых можно либо непосредственно представить в виде кода, либо разбить на еще более мелкие подзадачи. Данный метод называется определения функции. Заголовок функции включает в себя описание типа возвращаемого значения, имени (идентификатора) и формальных параметров.  Количество...
 
Petros Shatakhtsyan:

Si también funciona en el probador, es bueno. Lo comprobaré.

No, no lo hace.

La hora del servidor, por cierto, no se detiene el sábado. Aquí ocurre lo contrario: en el terminal, la hora del servidor se actualiza con la llegada de una nueva cotización. Por ejemplo, usted tiene sólo un símbolo abierto en la visión general del mercado (no sólo en el probador, sino también en la realidad). y no hay ticks durante cinco segundos - todo este tiempo el temporizador de tiempo del servidor no se moverá. esto se aplica al sábado: el tiempo del servidor está funcionando, pero el terminal no lo sabe, porque no hay ticks. el probador simplemente se perderá este período.

 
Petros Shatakhtsyan:

Pero aquí no sé cómo determinar si es un sábado o no. Al fin y al cabo, tras el cierre del mercado, el tiempo del servidor se detiene.

¿Con qué fin? ¿Ejecutar la auto-optimización en el fin de semana? Entonces, establecer un temporizador desde OnTick a una distancia de unos pocos minutos funcionaría. Si funciona, entonces los ticks se han detenido y puedes optimizar.

Si es para otros fines, formúlelos.

 
Alexey Viktorov:

Es extraño oírle hacer esas preguntas. El manual establece claramente


Gracias Alexey, no he mirado en la guía sobre este tema )).
Porque rara vez uso los parámetros por defecto, pero tenía que hacerlo, así que me tropecé con él.
Por alguna razón, siempre pensé que los parámetros no tenían prioridad, pero sí la tienen.

 

Me pueden decir cómo establecer el tamaño de una matriz, a partir de los argumentos pasados.
Algo así

void MxResize(int row, int col)
{
   int A[][];      

   ArrayResizeRow(A, row);    
   ArrayResizeCol(A, col);      
}

La entrada siguiente falla, - valor de índice no válido

void MxResize(int row=1, int col=1)
{
   int A[row][col];    
      
}
 
Roman:

Me pueden decir cómo establecer el tamaño de una matriz, a partir de los argumentos pasados.

https://www.mql5.com/ru/forum/328008/page2#comment_14166682

Размерность многомерных динамических массивов через ArrayResize
Размерность многомерных динамических массивов через ArrayResize
  • 2019.12.09
  • www.mql5.com
Добрый день. Такой вопрос волнует: как использовать ArrayResize для двумерных динамических массивов...