Errori, bug, domande - pagina 2891

 
A100:

Questo può essere quando il compilatore non ha oggettivamente alcuna informazione:

cioè f() può aver inizializzato i oppure no. E in questo caso il compilatore C++ dà un avvertimento, ma quello MQL no.

In C++ gli indirizzi delle celle di memoria non sono nascosti, è per questo che la variabile è inizializzata con spazzatura.
In Mql gli indirizzi delle celle di memoria sono nascosti e non sono accessibili. Ecco come lo sviluppatore di Mql ha incasinato il compilatore ))

In breve, inizializzate sempre le variabili e non avrete mal di testa.
 
Roman:

Sì, ma prima della prima iterazione la variabile j non è ancora inizializzata, cosa che il compilatore giura.

Se non usate questa variabile o mettete l'assegnazione i=j nel corpo del ciclo, che sarebbe identico all'esecuzione della prima opzione, non ci saranno avvertimenti. Il compilatore non controlla la logica del ciclo e la sequenza di esecuzione, controlla la sintassi dall'alto al basso, penso di sì, non ne sono sicuro)

 
C'è un errore nel servizio di ricerca del sito. Questa ricerca non produce questo risultato.
 

fxsaber:

E in altre situazioni.

premendo reply invece sta scuotendo il terminale - una grande innovazione

 
Errore di compilazione:
#define  MACRO(X)\ //Error: '\' - unexpected in macro definition
              X
 
TheXpert:

si preme invece risposta, si scarica il terminale - una grande innovazione.

È la stessa cosa... E con la domanda per la quale ho quasi ottenuto inchiodato qui (nel portafoglio stesso menu a discesa e argomenti non letti - solo fratelli gemelli), e con il tuo, e ancora (non so come chiunque) mi appendere tale ... "cosa".

Cosa fare con questa iscrizione? Da nessuna parte qualsiasi link per visualizzare chi viene chiesto e perché, no (forse si trova nel portafoglio, ma non ho guardato lì).

L'impressione molto persistente è che tutti questi "meravigliosi" cambiamenti al sito siano stati fatti da una persona.... E personalmente per se stesso. Esattamente come lui pensa di averne bisogno per se stesso. E non gliene frega niente della nostra opinione...

 
Сергей Таболин:

Cosa fare con questa iscrizione?

Non so, quando ci sono applicazioni normali scompare.
 

QuandoREASON_ACCOUNT è cambiato, ci si aspettava di ricevere l'account precedente e terminare il lavoro con esso, logicamente, ma no, se l'account è cambiato, riceviamo un nuovo numero nel deinit a REASON_ACCOUNT.

Logicamente, il programma dovrebbe finire di lavorare con i dati attuali e inviare i nuovi dati quando fa una nuova chiamata e non cambiare i dati nel processo...

 
Vladimir Pastushak:

QuandoREASON_ACCOUNT è cambiato, ci si aspettava di ricevere l'account precedente e terminare il lavoro con esso, logicamente, ma no, se l'account è cambiato, riceviamo un nuovo numero nel deinit a REASON_ACCOUNT.

Il programma dovrebbe logicamente completare il lavoro con i dati attuali e passare i nuovi dati quando si fa una nuova chiamata, senza cambiare i dati nel processo...

Ecco il codice che dimostra il comportamento scorretto

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   Print("Start ", (string)AccountInfoInteger(ACCOUNT_LOGIN));
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   if(reason == REASON_ACCOUNT)
      Print("Stop ", (string)AccountInfoInteger(ACCOUNT_LOGIN));
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+

Risultato

2020.10.28 17:23:05.725 Test (EURUSD,M1)        Stop 600....
2020.10.28 17:23:06.306 Test (EURUSD,M1)        Start 600....
2020.10.28 17:23:17.478 Test (EURUSD,M1)        Stop 535....
2020.10.28 17:23:18.156 Test (EURUSD,M1)        Start 535....
 
Vladimir Pastushak:

QuandoREASON_ACCOUNT è cambiato, ci si aspettava di ricevere l'account precedente e terminare il lavoro con esso, logicamente, ma no, se l'account è cambiato, riceviamo un nuovo numero nel deinit a REASON_ACCOUNT.

Il programma dovrebbe logicamente finire di lavorare con i dati attuali e inviare i nuovi dati quando fa una nuova chiamata, e non cambiare i dati nel processo...

Questo non è un errore e quindi il comportamento non cambierà. Basta considerare questa peculiarità.