Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 156
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
1) pourquoi ne pas initialiser immédiatement en déclarant int err=0 ?
2) Je n'ai pas vérifié, mais selon la documentation, err est stocké dans une variable, qui est automatiquement remise à zéro lors de l'utilisation de la fonction GetLastError(),
et change aussi toujours lors de l'utilisation de certaines fonctions (principalement celles du terminal)
3) C'est pourquoi GetLastError() a donné une valeur de 0 après avoir fait référence à un numéro de ticket inexistant dans OrderSelect:
"Les autres fonctions ne modifient en aucun cas la valeur de la variable last_error. ................., OrderSelect, ...................."
Souvent, je déclarais une variable comme celle-ci à l'intérieur des fonctions :
Plus loin, à une certaine condition, je l'appelle déjà pour voir s'il y a une erreur. Eh bien, ce n'est pas seulement moi, mais de nombreux autres endroits du code que j'ai rencontrés. Pour ainsi dire, c'est une situation typique. J'ai pensé aujourd'hui qu'il n'est pas logique de déclarer la même variable à chaque fois dans chaque fonction où l'on veut contrôler les erreurs. J'y ai réfléchi et j'en suis arrivé à la conclusion qu'il serait plus facile de déclarer globalement une fois et de l'initialiser dans le init. C'est comme ça :
Et encore, lorsque vous devez appeler la variable err dans des fonctions utilisateur, sachant qu'elle a déjà une valeur. En fait, GetLastError() sort le code de la dernière erreur, donc si cette variable err est appelée dans chaque fonction à la fin de tous les calculs, qui est responsable de la sortie du code d'erreur, et appelle GetLastError(), alors tout sera correct, non ?
Mais si vous n'appelez pas cette variable à la fin d'une fonction (en suivant la chaîne d'exécution du code), elle ne sera pas réinitialisée, et il pourrait y avoir une erreur d'exécution, dans le cas où il y avait une erreur dans la chaîne d'exécution précédente, mais pas dans la chaîne actuelle, mais le code d'erreur est retourné en dernier... Et pour la réinitialiser, vous devez appeler cette fonction GetLastError(). C'est-à-dire qu'ici tout dépend du fait qu'il ait été appelé ou non. Si vous n'êtes pas sûr qu'il sera partout, il est plus facile de le réassurer et de le remettre à zéro à chaque fois, non ?
Vous pouvez err le déclarer globalement, puis dans start() avant d'appeler GetLastError() le réinitialiser, par ex :
1) pourquoi ne pas initialiser immédiatement en déclarant int err=0 ?
2) Je n'ai pas vérifié, mais selon la documentation, err est stocké dans une variable, qui est automatiquement remise à zéro lors de l'utilisation de la fonction GetLastError(),
et change aussi toujours lors de l'utilisation de certaines fonctions (principalement celles du terminal)
3) C'est pourquoi GetLastError() a donné une valeur de 0 après avoir fait référence à un numéro de ticket inexistant dans OrderSelect:
"Les autres fonctions ne modifient en aucun cas la valeur de la variable last_error. ................., OrderSelect, ...................."
Vous pouvez déclarer err globalement, puis le mettre à zéro dans start() avant d'appeler GetLastError(), par exemple
alors il y a déjà un problème de logique. À moins que GetLastError() ne soit constamment appelé(théoriquement à la fin de chaque fonction utilisateur).
Parfois, vous devez l'appeler plus souvent
Victor (hoz), je ne comprends pas votre acharnement sur la dernière erreur.
Déclarez une fonction pour la gestion des erreurs et appelez-la si nécessaire. Tout sera local et pourra être utilisé partout.
Victor (hoz), je ne comprends pas votre acharnement sur la dernière erreur.
Déclarez une fonction pour la gestion des erreurs et appelez-la si nécessaire. Tout sera local et pourra être utilisé partout.
C'est compréhensible. Mais cette fonction sera appelée quand j'en aurai besoin, c'est-à-dire quand je voudrai vérifier s'il y a une erreur. Mais s'il y a eu une erreur quelque part auparavant et qu'il n'y a pas d'erreur en ce moment, il retournera l'erreur précédente... Parce que dans votre fonction Vadim, la variable LastError n'est pas remise à zéro , en appelant GetLastError(). Voilà le truc...
C'est compréhensible. Mais cette fonction sera appelée quand j'en aurai besoin, c'est-à-dire quand je voudrai vérifier s'il y a une erreur. Mais s'il y avait une erreur quelque part auparavant, et qu'à ce moment-là il n'y a pas d'erreur, il retournera l'erreur précédente... Parce que dans votre fonction Vadim, la variable LastError n'est pas remise à zéro , en appelant GetLastError(). C'est le but...
Il ne doit pas être remis à zéro. Il faut prendre l'habitude de vérifier les erreurs partout après les fonctions. Vous devez également rendre l'appel désactivable. Pour qu'il ne ralentisse pas en mode combat. C'est-à-dire qu'il s'agit d'un débogueur.
L'exception, bien sûr, concerne les erreurs qui doivent être analysées, pour prendre une décision.
C'est compréhensible. Mais cette fonction sera appelée quand j'en aurai besoin, c'est-à-dire quand je voudrai vérifier s'il y a une erreur. Mais s'il y a eu une erreur quelque part auparavant et qu'il n'y a pas d'erreur en ce moment, il retournera l'erreur précédente... Parce que dans votre fonction Vadim, la variable LastError n'est pas remise à zéro , en appelant GetLastError(). Voici le point...