Erros, bugs, perguntas - página 2633

 

2310
Estranho comportamento.
Se definir a matriz começando com o quarto parâmetro, ou com o quinto, sexto, etc.

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

o compilador gera um erro

'array' - missing default value for parameter

Reorganizo a matriz com o primeiro, ou segundo, ou terceiro parâmetro, sem erro.

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


Segundo comportamento estranho.
No editor em F5, após a compilação muitas vezes desencadeia o tempo de execução do guião.

 
Roman:

2310
Isto é um comportamento estranho.
Se definir a matriz começando com o quarto parâmetro, ou com o quinto, sexto, etc.

o compilador gera um erro

Reorganizo a matriz com o primeiro, ou segundo, ou terceiro parâmetro, sem erro.


Segundo comportamento estranho.
No editor por F5, após a compilação, desencadeia frequentemente a execução de um programa.

Se houver um valor por defeito para um dos parâmetros, então todos os parâmetros subsequentes devem também ter valores por defeito.

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

Este foi o comportamento desde o início.

E não se trata da matriz, mas sim do valor por defeito que o último argumento tem. Todos os subsequentes também o devem ter:

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

Se houver um valor por defeito para um dos parâmetros, então todos os parâmetros subsequentes devem também ter valores por defeito.

Este foi o comportamento desde o início.

E não se trata da matriz, mas sim do valor por defeito do último argumento. Todos os subsequentes são obrigados a tê-lo também:

Obrigado pelo esclarecimento, mas o comportamento é estranho ))

 
Artyom Trishkin:

Portanto, a sua classificação ainda não é suficientemente boa para blogues.

Onde posso ler sobre o assunto? De que tipo de classificação precisa? O que é que precisa de fazer?
 
Roman:

Obrigado pelo esclarecimento, mas o comportamento é estranho ))

É estranho ouvi-lo fazer tais perguntas. O manual afirma claramente


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

Se funcionar também no testador, isso é bom. Vou verificar.

não, não tem.

A propósito, a hora do servidor não pára no sábado. aqui é o oposto: no terminal, a hora do servidor é actualizada com a chegada de uma nova citação. Por exemplo, tem apenas um símbolo aberto na visão geral do mercado (não só no testador, mas também na realidade). e não há ticks durante cinco segundos - todo este tempo o temporizador do servidor não se moverá. isto aplica-se ao sábado: o tempo do servidor está a correr, mas o terminal não o sabe, porque não há ticks. o testador simplesmente falhará este período.

 
Petros Shatakhtsyan:

Mas aqui não sei como determinar se é um sábado ou não. Afinal, após o encerramento do mercado, o tempo do servidor é interrompido.

Com que objectivo? Para fazer uma auto-optimização no fim-de-semana? Em seguida, a definição de um temporizador da OnTick a uma distância de alguns minutos funcionaria. Se funcionar, então as carraças pararam e é possível optimizar.

Se, para outros fins, formulá-los.

 
Alexey Viktorov:

É estranho ouvi-lo fazer tais perguntas. O manual afirma claramente


Obrigado Alexey, ainda não procurei no guia sobre este assunto ))).
Porque raramente utilizo parâmetros por defeito, mas aqui precisava deles, pelo que me deparei com eles.
Sempre se pensou, por alguma razão, que os parâmetros não têm prioridade de classificação, mas têm.

 

Pode dizer-me como definir o tamanho de uma matriz, a partir dos argumentos passados.
Algo parecido com isto

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

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

A entrada abaixo falha, - valor do índice inválido

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

Pode dizer-me como definir o tamanho para uma matriz, a partir dos argumentos passados.

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

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