Errori, bug, domande - pagina 2332

 
Vladimir Pastushak:

Secondo l'aiuto, dovrebbe restituire false se il file non esiste.

In senso stretto, non segue dalla documentazione che il risultato di FileGetInteger(FileName,FILE_EXISTS) sia necessariamente un bool

Ma la logica è ornata in ogni caso

https://www.mql5.com/ru/forum/1111/page1788#comment_4071879

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.02.08
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

Il motore del sito non evidenzia la macro in rosso.

 
Vladimir Pastushak:

bool file_exists=(bool)FileGetInteger(FileName,FILE_EXISTS);

In ogni caso restituisce true se c'è il file o no, e l'errore 5019 se non c'è il file. Secondo l'aiuto, dovrebbe restituire false se non c'è nessun file.

bool file_exists=FileIsExist(FileName); funziona correttamente

Il modo corretto sarebbe

bool file_exists=FileGetInteger(FileName,FILE_EXISTS)==1; 
 
Vladimir Pastushak:

Preso in mt 5

Si prega di fornire il codice da studiare, via PM

 
fxsaber:

Il motore del sito web non evidenzia la macro in rosso.

Dovrebbe essere evidenziato in rosso solo se la macro è stata precedentemente definita

#define  PRICEST_TICK_PRICE bid
//...
#define PRICEST_TICK_PRICE ask

Altrimenti come fate a sapere che una macro non è stata definita prima? E non è un override accidentale

A volte funziona anche in MetaEditor:


 
A100:

Il colore dovrebbe essere evidenziato solo se la macro è stata precedentemente definita

altrimenti come facciamo a sapere che la macro non è stata definita in precedenza?! e questo non è un override accidentale

Allora dobbiamo definire cos'è una macro evidenziata e cos'è una macro non evidenziata?

Pensavo che tutte le macro fossero evidenziate. A quanto pare la regola è diversa.

 
fxsaber:

Poi dobbiamo decidere cosa è una macro evidenziata e cosa non è evidenziata?

Pensavo che tutte le macro fossero evidenziate. A quanto pare, la regola è diversa.

Penso che dobbiamo decidere a cosa serve evidenziare, è solo per la bellezza o per l'informazione? Non ci sono regole in quanto tali al momento:

In generale, è auspicabile che se un identificatore è già stato definito e non è indifeso, sia evidenziato a colori

 
A100:

Penso che dobbiamo decidere a cosa serve l'illuminazione: è per bellezza o per informazione? Non ci sono regole in quanto tali al momento:

Per me, la regola generale è: la macro è sempre rossa.

 
fxsaber:

Per me la regola è comoda: la macro è sempre rossa.

Qual è la convenienza qui?
#define PRICEST_TICK_PRICE bid

L'inconveniente è chiaro: non si può dire se l'identificatore PRICEST_TICK_PRICE è stato precedentemente definito o meno

E perché dovrebbe qui (3)

//Ln 240
#define  PRICEST_TICK_PRICE ask //(1)
#undef  PRICEST_TICK_PRICE     //(2)
void OnStart()
{
        int PRICEST_TICK_PRICE; //(3)
}

essere rosso? E se non è rosso qui (3), perché dovrebbe essere rosso in (1)?

Regola pratica: un identificatore è rosso solo se è stato precedentemente(!) definito e non annullato

 

A100:
А в чем здесь удобство?

Vedo che si tratta di una macro. In questo caso non c'è bisogno di vedere #define laterally.

L'inconveniente è chiaro: è impossibile capire se l'identificatore PRICEST_TICK_PRICE è stato precedentemente definito o no.

Non ho mai cercato di determinarlo in base al colore. Inoltre, se tutto è in #ifdef, MQL4 e MQL5 possono avere colori diversi. Il modo più semplice è fare ALT+G sul nome della macro per vedere se c'è o no.

Regola pratica: l'identificatore è rosso solo se precedentemente(!) è stato definito

Sarei tranquillo se la macro fosse menzionata almeno una volta da qualche parte in #define, #ifdef, #undef, ecc. Anche se non è definito.