Erreurs, bugs, questions - page 2680

 
Igor Makanu:

l'année dernière, cela n'a pas fonctionné de cette façon - j'ai spécifiquement testé les modificateurs de constantes.

et il semble que@Ilyas a expliqué comment exécuter un programme MQL, d'abord tous les const et static sont initialisés, peu importe où ils sont définis, et ensuite les constructeurs de classe sont appelés

ok, avec cette initialisation static / const - il peut encore être distribué correctement, mais le fait que le modificateur const ne garantit pas que le compilateur va le vérifier - très inattendu - mon deuxième exemple

Dans vos deux exemples, tout fonctionne correctement et est attendu.

 
Koldun Zloy:

Dans vos deux exemples, tout fonctionne correctement et est attendu.

comme prévu, le modificateur const est sûr à 99% que le compilateur trouvera mon erreur à la compilation, VS2019 le fait, MQL ne le fait pas.

 
Igor Makanu:

Le modificateur const attendu est sûr à 99% que le compilateur trouvera mon erreur lors de la compilation, VS2019 le fait, MQL ne le fait pas.

Que considérez-vous exactement comme une erreur ?

Je ne reçois aucune erreur de VS2019.

 
Igor Makanu:

l'année dernière, cela n'a pas fonctionné ainsi - j'ai spécifiquement testé les modificateurs de const.

et il semble que@Ilyas ait expliqué comment exécuter un programme MQL, d'abord toutes les variables constantes et statiques sont initialisées, peu importe où elles sont décrites, et ensuite les constructeurs de classe sont appelés.

Il semble qu'il s'agissait de variables globales avec des modificateurs const/static et que vous utilisez des variables locales.

 
Koldun Zloy:

Que considérez-vous exactement comme une erreur ?

Je ne reçois aucune erreur de VS2019.

l'erreur est que le compilateur MQL permet des expressions ambiguës, s'il y a un modificateur const, alors c'est une constante

ce même code n' a pas étésuivi par le compilateur ? l'autre situation a été suivie.

Sharp dans VS2019 a tout souligné avant la compilation.

class A{
public:
   int ivalue;
   int inc()const {static int v = 0; return(++v);}
   A():ivalue(0){}
};

class B{
public:
   int ivalue;
   int inc(){return(++ivalue);}
   B():ivalue(0){}
};

//+------------------------------------------------------------------+
void OnStart()
{
   const A a;
   Print(a.inc());  
   B b1;
   Print(b1.inc());
   const B b2;
   Print(b2.inc()); // 'inc' - call non-const method for constant object
}
//+------------------------------------------------------------------+
Sergey Dzyublik:

Vous devez avoir voulu parler de variables globales avec des modificateurs const/static, alors que vous utilisez des variables locales.

Je suis peut-être confus, mais le comportement des modificateurs de const est très différent de celui du C#.

 

Une variable déclarée avec un modificateur const ne peut pas être modifiée. Le compilateur en tient compte.

Vous vous attendez probablement à ce qu'il fasse autre chose.

 
Koldun Zloy:

Vous en attendez probablement quelque chose de différent.

Apparemment oui, je m'attends à ce que ce soit la même chose lorsque l'on passe de MQL à C#.

 

Construire 2366

namespace X
{

class A
{
public:
   A(){}
};

}  //  namespace X

class B : public X::A
{
public:
   B() : X::A()  //'X' - struct member undefined
   {
   }
};
 
Ilyas:

Merci pour l'article, je vais vérifier

mq5 - normal. mq4 - cassé. Vous pouvez prendre TypeToBytes_ExampleScript.mq4 d'ici. Il ne compile que si vous changez l'extension en mq5.

 

Bonjour chers collègues.

Je ne suis peut-être pas le premier à poser cette question. J'ai écrit dans un autre fil de discussion, mais je n'ai pas reçu de réponse des développeurs. Comment se fait-il que la valeur réelle du pip de XAUUSD soit de 1USD ?

La fonction SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE) affiche de manière persistante 0.1USD

Et comment compter le drawdown, le profit, et d'autres choses, tandis que les paires de devises montrent la valeur normale du tick.

Terminal Z.I. MT5