Erreurs, bugs, questions - page 3106

 
A100 #:

Contradiction :

Quelle est la différence fondamentale entre (1) et (2) ?

1 est l'initialisation à la déclaration, 2 est (généralement) le changement.

 
JRandomTrader #:

1 est l'initialisation à la déclaration, 2 est (dans le cas général) la modification.

Si x1[0].i peut être zéro, pourquoi x2[0].i ne le pourrait-il pas ? En quoi est-ce pire ?

Voici un exemple simplifié de contradiction :

void OnStart()
{
    X x1[1] = {};    //(1) нормально ???
    X x3 = { 0 };    //(3) Error: 'x3' - cannot be initialized with initializer list
}
 
A100 #:

Voici un exemple simplifié d'une contradiction :

Et en voici un autre :

void OnStart()
{
    X x1[1] = {};    //(1) нормально ???
    X x2[1];
    Print( x1[0].i == x2[0].i );
}

Résultat : faux

Considérant que :

 
Erreur : le logiciel a calculé de manière incompréhensible une transaction effectuée en roubles 365₽->338₽ (40 actions) et au lieu de -1020₽ il a montré une perte de 148 $.
Si quelqu'un le sait, qu'il nous dise ce qui peut être fait.
Dossiers :
 

L'aide des experts :

struct Y
  {
   int               i;
                     Y(const Y & p): i(p.i) {}
  };

void OnStart()
{
  Y y(y);               // UB?
}

C'est UB ou quoi ?

 
Erreur interne du compilateur
union X {
    struct XX {char i;} s;
    int i;
} x[1] = {};
void OnStart() {}
5ème avec {}
 
mktr8591 #:

C'est UB ou quoi?

Il s'agit d'un défaut du compilateur - en théorie, il devrait y avoir une erreur au moment de la compilation, car dans MQL

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Bugs, bugs, questions

A100, 2020.09.30 16:54

Cela contredit votre propre concept selon lequel une variable est considérée comme déclarée lorsque la déclaration est finalisée. Pourquoi l'avez-vous inventé en premier lieu ? Si c'est le cas dans une affaire et différent dans une autre.

Si vous réécrivez OnStart comme ceci :

void OnStart()
{
  Y y = y; //Error: 'y' - undeclared identifier
}
alors le compilateur réagit en fonction de la théorie des
 
A100 #:

Il s'agit d'un défaut du compilateur - en théorie, il devrait y avoir une erreur à l'étape de la compilation, car dans MQL

si vous réécrivez OnStart comme ceci :

alors le compilateur réagit selon la théorie

Exactement.

Merci !

 

Quelqu'un a-t-il trouvé comment utiliser la bibliothèque standard pour augmenter la priorité du panneau ?

J'ai pris le code de l'exemple d'ici.

Dans l'animation, vous pouvez voir que si vous créez un panneau, puis une ligne de tendance et que vous les placez sous le bouton, les clics sur le bouton capturent les événements de clics pour la ligne. Le bouton est ignoré.

J'ai essayé de définir la priorité du bouton de la manière suivante : m_button3.ZOrder(100) - mais cela n'a rien donné.

Il existe également une méthode CWnd::BringToTop(), que j'ai définie pour l'ensemble du panneau et séparément pour un bouton. Mais on ne sait pas très bien comment cela doit fonctionner, comment l'appeler correctement et définir cette priorité. Le dépairage lors de l'appel de cette méthode montre que m_id est toujours égal à -1, bien qu'il s'agisse de l'ID de l'objet, à en juger par le commentaire, mais m_name semble montrer que l'objet est concerné.


Si quelqu'un a une solution, veuillez indiquer où creuser.

 
Vasiliy Pushkaryov #:

Quelqu'un a-t-il trouvé comment utiliser la bibliothèque standard pour augmenter la priorité du panneau ?

J'ai pris le code de l'exemple d'ici.

Dans l'animation, vous pouvez voir que si vous créez un panneau, puis une ligne de tendance et que vous les placez sous le bouton, les clics sur le bouton capturent des événements de clic pour la ligne. Le bouton est ignoré.

J'ai essayé de définir la priorité du bouton de la manière suivante : m_button3.ZOrder(100) - mais cela n'a rien donné.

Il existe également une méthode CWnd::BringToTop(), que j'ai définie pour l'ensemble du panneau et séparément pour le bouton. Mais on ne sait pas très bien comment cela doit fonctionner, comment l'appeler correctement et définir cette priorité. Le dépairage lors de l'appel de cette méthode montre que m_id est toujours égal à -1, bien qu'il s'agisse de l'ID de l'objet, à en juger par le commentaire, mais m_name semble montrer que l'objet est concerné.


Si quelqu'un a une solution, veuillez indiquer où creuser.

https://www.mql5.com/ru/docs/constants/chartconstants/enum_chart_property#enum_chart_property_integer