Erreurs, bugs, questions - page 1925

 
Yury Kirillov:

Depuis au moins la version 1625, MT5 ne fonctionne plus lors des tests.

Bild 1626 :

Joue au moins dans les modes "every tick..." et "all ticks".


Après-midi. Besoin d'étapes pour la lecture. Besoin d'un expert/indicateur et de paramètres de test. Veuillez écrire à servicedesk.

 
Alexander:

Bon après-midi. Besoin d'étapes pour la lecture. Besoin d'un expert/indicateur et de paramètres de test. Veuillez écrire à servicedesk.


J'ai écrit à TA#1794147.

Le crash semble être généré lors de l'utilisation de HistoryDealGetTicket(i), avec un paramètre supérieur au nombre de transactions disponibles.

 
Yury Kirillov:

J'ai écrit à TP#1794147.

Le crash semble être généré lors de l'utilisation de HistoryDealGetTicket(i), avec un paramètre qui dépasse le nombre de transactions disponibles.

Oui, je l'ai vu. Merci

 

Aucun message d'erreur

struct A {
        int z;
};
void OnStart()
{
        int const b; //'b' - 'const' variable must be initialized
        A   const a; //нет сообщения об ошибке //по сути равнозначно записи: int const а.z; 
}
Un constructeur explicite ou une séquence d'initialisation doit être présent.
 
A100:

Aucun message d'erreur

A cause du constructeur. Donc c'est bon.

 
fxsaber:

A cause du constructeur. Donc c'est bon.

A cause d'un constructeur qui ne fait rien ?

struct A {
        A() {}
        int a;
}; 
void OnStart()
{
        const A a; //нормально
}

S'il est possible de ne pas initialiser const int A::a, alors pourquoi nécessairement initialiser const int b dans le cas précédent ?

 
A100:

À cause d'un constructeur qui ne fait rien ?

Oui, à cause du constructeur par défaut vide.

Si vous pouvez désinitialiser const int A::a, alors pourquoi nécessairement initialiser const int b dans le cas précédent ?

Pourquoi le système affiche-t-il une erreur au lieu d'un avertissement ? Eh bien, cela peut être fait de cette façon

void OnStart()
{
  int a;
  const int b = a;
}

IMHO, il doit y avoir un Warning quand une variable const d'un type simple n'est pas initialisée. Et il ne devrait pas y avoir d'avertissement lorsque la valeur OrderSend n'est pas vérifiée. Mais cela semble être la vision correcte des développeurs. C'est-à-dire que le raisonnement est subjectif.

 
fxsaber:

Pourquoi le système affiche-t-il une erreur au lieu d'un avertissement ? Après tout, vous pouvez le faire de cette façon

Parce que l'utilisation d'une variable constante non initialisée n'a aucun sens - d'où l'erreur (elle contient une valeur aléatoire et ne peut être modifiée ultérieurement).

 
A100:

Parce que l'utilisation d'une variable constante non initialisée n'a pas de sens - d'où l'erreur (elle contient une valeur aléatoire et son utilisation ultérieure entraînera des erreurs difficiles à trouver).

J'ai barré un mot dans la citation, mais le sens ne changera pas s'il n'y a que des opérations en lecture seule à l'avenir. Pour les non-const, il donne un avertissement, pour les const, il donne une erreur. C'est l'une des décisions controversées des développeurs.

 
fxsaber:

s'il n'y aura que des opérations en lecture seule dans le futur.

Le compilateur ne sait pas (et ne doit pas savoir) quelles seront les opérations futures (sinon le temps de compilation serait des heures au lieu de minutes)