Errori, bug, domande - pagina 2633

 

2310
Strano comportamento.
Se si imposta l'array a partire dal quarto parametro, o il quinto, il sesto, ecc.

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

il compilatore genera un errore

'array' - missing default value for parameter

Riordino l'array con il primo, o il secondo, o il terzo parametro, nessun errore.

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


Secondo comportamento strano.
Nell'editor su F5, dopo la compilazione spesso si attiva il runtime dello script.

 
Roman:

2310
Questo è un comportamento strano.
Se impostate l'array a partire dal quarto parametro, o il quinto, il sesto, ecc.

il compilatore genera un errore

Riordino l'array con il primo, o il secondo, o il terzo parametro, nessun errore.


Secondo comportamento strano.
Nell'editor con F5, dopo la compilazione, spesso si innesca l'esecuzione del programma.

Se c'è un valore predefinito per uno dei parametri, allora anche tutti i parametri successivi dovrebbero avere valori predefiniti.

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

Questo era il comportamento fin dall'inizio.

E non si tratta dell'array, ma del valore di default che ha l'ultimo argomento. Anche tutti i successivi devono averla:

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

Se c'è un valore predefinito per uno dei parametri, allora anche tutti i parametri successivi dovrebbero avere valori predefiniti.

Questo era il comportamento fin dall'inizio.

E non si tratta dell'array, ma del valore predefinito dell'ultimo argomento. Anche tutti i successivi sono tenuti ad averla:

Grazie per il chiarimento, ma il comportamento è strano ))

 
Artyom Trishkin:

Quindi il tuo ranking non è ancora abbastanza buono per i blog.

Dove posso leggere qualcosa al riguardo? Di che tipo di valutazione avete bisogno? Cosa dovete fare?
 
Roman:

Grazie per il chiarimento, ma il comportamento è strano ))

È strano sentirti fare queste domande. Il manuale afferma chiaramente


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

Se funziona anche sul tester, va bene. Controllerò.

No, non è così.

Il tempo del server, a proposito, non si ferma il sabato. ecco il contrario: nel terminale, il tempo del server viene aggiornato con l'arrivo di una nuova quotazione. Per esempio, avete solo un simbolo aperto nella panoramica del mercato (non solo nel tester, ma anche nella realtà). e non ci sono tick per cinque secondi - per tutto questo tempo il timer del tempo del server non si muoverà. questo vale per il sabato: il tempo del server è in esecuzione, ma il terminale non lo sa, perché non ci sono tick. il tester semplicemente mancherà questo periodo.

 
Petros Shatakhtsyan:

Ma qui non so come determinare se è un sabato o no. Dopo tutto, dopo la chiusura del mercato, il tempo del server si ferma.

A quale scopo? Per eseguire l'auto-ottimizzazione nel fine settimana? Quindi l'impostazione di un timer da OnTick a distanza di qualche minuto funzionerebbe. Se funziona, allora i ticchettii si sono fermati e si può ottimizzare.

Se per altri scopi, formulateli.

 
Alexey Viktorov:

È strano sentirti fare queste domande. Il manuale afferma chiaramente


Grazie Alexey, non ho guardato nella guida su questo argomento )).
Perché uso raramente i parametri di default, ma qui ne avevo bisogno, quindi mi sono imbattuto in loro.
Ho sempre pensato, per qualche motivo, che i parametri non avessero un ordine di priorità, ma è così.

 

Potete dirmi come impostare la dimensione di una matrice, dagli argomenti passati.
Qualcosa del genere

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

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

La voce sottostante fallisce, - valore dell'indice non valido

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

Potete dirmi come impostare la dimensione di una matrice, dagli argomenti passati.

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

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