Se si decommenta if(Count>2) ExpertRemove(), e si esce da questa funzione, alloradopo lo scarico dell'EA, il commento "Deinit() attivato durante lo scarico" rimane visualizzato sul grafico.
Qualcuno sa perché, se tale EA viene rimosso dal grafico tramite il menu contestuale, allora Comment() da OnDeinitnon rimane sul grafico?
int Err; //Номер ошибкиint FunErr(int Err) // Функция обработки ошибок
dà un avvertimento:
la dichiarazione di 'Err' nasconde la dichiarazione globale alla linea 51
Un'altra variante di codice
int Err; //Номер ошибкиint FunErr(Err) // Функция обработки ошибок
dà un errore:
'Err' - dichiarazione senza tipo
Come scriverlo correttamente?
Questo è un errore di progettazione del linguaggio in generale, difeso al più alto livello. Due fatti:
1. Il linguaggio MQL4++ permette di nascondere i nomi delle variabili negli scopi annidati.
2. Quando si nascondono i nomi delle variabili negli scopi annidati, ci deve essere un avvertimento, che non può essere disabilitato.
Per rispondere alla domanda, ci sono almeno due possibilità:
1. usare il name hiding, ma sopportare la presenza di un avvertimento (male, si potrebbe perdere un altro avvertimento molto importante tra i molti avvertimenti sul nascondere i nomi che potrebbe aiutare a rilevare ed eliminare un potenziale errore).
2. Non usare il name hiding, anche se la lingua ha questa caratteristica. Per esempio, nominate la variabile globale gErr invece di Err.
Invece di proibire di nascondere i nomi, viene introdotto un avvertimento non rimovibile. Approfittatene.
ci sono delle regole del codice?
Certo, e non solo il codice!
https://forum.mql4.com/ru/38943
Non riesco a capire perché si blocca
while(i>=1) // Ciclo di barre non contate
i>=1sempre.
int i// Indice delle barre
while(i>=1) // Loop over uncounted bars
i>=1sempre.
Giusto, mi ero dimenticato di... grazie.
i--;
Se si decommenta if(Count>2) ExpertRemove(), e si esce da questa funzione, alloradopo lo scarico dell'EA, il commento "Deinit() attivato durante lo scarico" rimane visualizzato sul grafico.
Qualcuno sa perché, se tale EA viene rimosso dal grafico tramite il menu contestuale, allora Comment() da OnDeinit non rimane sul grafico?
Shurkin:
Questo è un errore di progettazione del linguaggio in generale, difeso al più alto livello. Due fatti:
1. Il linguaggio MQL4++ permette di nascondere i nomi delle variabili negli scopi annidati.
2. Quando si nascondono i nomi delle variabili negli scopi annidati, ci deve essere un avvertimento, che non può essere disabilitato.
Per rispondere alla domanda, ci sono almeno due possibilità:
1. usare il name hiding, ma sopportare la presenza di un avvertimento (male, si potrebbe perdere un altro avvertimento molto importante tra i molti avvertimenti sul nascondere i nomi che potrebbe aiutare a rilevare ed eliminare un potenziale errore).
2. Non usare il name hiding, anche se la lingua ha questa caratteristica. Per esempio, nominate la variabile globale gErr invece di Err.
Invece di proibire di nascondere i nomi, viene introdotto un avvertimento non rimovibile. Approfittatene.
In russo: l'opzione corretta è la prima, ignorare gli avvertimenti.
In russo: l'opzione corretta è la prima, ignorare gli avvertimenti.