Errori, bug, domande - pagina 325

 
AlexSTAL:
Merda... Il terminale è dotato di così tanti esempi... ...tanti esempi... Lo script SymbolInfoSample.mq5, per esempio
A volte è sufficiente definire nuovi concetti all'inizio. E solo allora esaminare gli esempi di programmi.
 
Come ottengo il percorso completo per includere il file?


Ci sono due funzioni

__FILE__ - dà solo il nome del file

MQL5_PROGRAM_PATH - dà il percorso alfile ex5 risultante


Domanda - come faccio a sapere dove si trova nel file mqh?

 
In MetaEditor, il pulsante "List of functions in file" apre la lista. Se si scorre verso il basso, finisce a P e non si muove oltre (il triangolo nero che punta verso il basso diventa inattivo), anche se ci sono anche classi con la lettera R. Per favore, correggetelo.
 
-Alexey-:
In MetaEditor, il pulsante "List of functions in file" apre la lista. Se si scorre verso il basso, finisce a P e non si muove oltre (il triangolo nero che punta verso il basso diventa inattivo), anche se ci sono anche classi con la lettera R. Si prega di correggere.

E almeno la dimensione approssimativa della lista cosa? Forse c'è un limite alla dimensione della lista...
 

Non so se è un bug o se ho trovato un trucco. Il seguente codice funziona, ma dà un avvertimento: l'espressione non è booleana

void OnStart()
  {
//---
   int a=3;
   int b=3;
   int c=3;
//---   
   if(a=b=c=3)Alert("a=b=c=3");
   else Alert("Условие не верно");
//---
  }
 
sergey1294:

Non so se è un bug o un trucco. Il seguente codice funziona ma genera l'espressione non è un avviso booleano



Perché il codice non dovrebbe funzionare?

L'unica cosa è che l'operando if non è convertito in un bool, questo è ciò di cui il compilatore avverte, ma per il resto tutto è corretto.

a,b,c, a proposito, possono non essere inizializzati affatto, poiché sono assegnati esplicitamente nell'if.

3 assegna ad a, assegna a a b, assegna b a c e poi controlla se è vero e poi scrive Print().

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора - Документация по MQL5
 
sergey1294:

Non so se è un bug o se ho trovato un trucco. Il seguente codice funziona, ma dà un avvertimento: l'espressione non è booleana


Probabilmente è così.

void OnStart()
{
//----------------------------------------------------------------------------//
//Work variables
int a=3;
int b=3;
int c=3;
//----------------------------------------------------------------------------//
  if(a&&b&&c==3)Alert("a=b=c=3");
  else Alert("Условие не верно");
//----------------------------------------------------------------------------//
}
 

Allora dimmi come scrivere questa espressione in modo che non imprechi.

void OnStart()
  {
//---
   int a=1;
   int b=2;
   int c=3;
//---   
   if(a<b<c)Alert("a<b<c");
   else Alert("Условие не верно");
//---
  }
 
sergey1294:

Allora dimmi come scrivere questa espressione in modo che non imprechi.


if(a<b&&b<c){Print("");}

Nel primo post stai facendo operazioni di assegnazione, l'assegnazione multipla a cascata è accettabile. Qui si sta cercando di fare un confronto multiplo.

SZ dato che hai due risultati di confronto nel tuo output dovrebbero essere separati da && o da un altro operatore booleano.

 
sergey1294:

Allora dimmi come scrivere questa espressione in modo che non imprechi.


Suggerisco quanto segue.

//----------------------------------------------------------------------------//
//Work variables
int a=1;
int b=2;
int c=3;
//----------------------------------------------------------------------------//
  if(a<b&&b<c)Alert("a<b<c");
  else Alert("Условие не верно");
//----------------------------------------------------------------------------//

Nikolay è davanti a te :)

Urain:

SZY dato che hai due risultati di confronto nel tuo output, dovrebbero essere separati da && o da un altro operatore booleano.

In questo caso solo &&.