Erreurs, bugs, questions - page 2752
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Vous devriez au moins finir l'école avant d'accuser les étrangers de quelque chose
En russe, un point d'interrogation à la fin d'une phrase ne signifie pas une affirmation !
Désolé de vous avoir blessé...
J'espère que vous parviendrez à découvrir comment l'insidieux modificateur const fonctionne dans MQL.
Erreurs, bogues, questions
Igor Makanu,2020.03.21 10:26
ça ne marchait pas comme ça l'année dernière - je testais volontairement les modificateurs const
et il semble que@Ilyas ait expliqué comment exécuter un programme MQL. D'abord tous les const et static sont initialisés peu importe où ils sont décrits et ensuite les constructeurs de classe sont appelés
ok, avec cette initialisation static / const - il peut être distribué correctement, mais le modificateur const ne garantit pas que le compilateur le vérifiera - très inattendu - mon deuxième exemple
Désolé si j'ai blessé votre dignité...
J'espère que vous serez en mesure de comprendre comment l'insidieux modificateur const fonctionne dans MQL.
Désolé, lisez le contexte, y compris les délimiteurs.
Vous et moi avons des missions différentes pour être sur le forum, vous êtes un utilisateur du forum qui sait tout et qui améliore ses compétences en répondant aux questions des utilisateurs du forum, tandis que je n'ai pas peur de poser une question sur le forum et je n'ai pas peur de montrer mon ignorance à ce sujet..... Pourquoi poser une question si vous connaissez la réponse ?
bien que vous soyez peut-être un représentant de l'industrie de la sécurité, vous essayez une fois de plus de retrouver mes messages dans l'historique du forum pour les rattacher à la discussion actuelle ... lisez la première ligne de ce message !
Pendant le débogage et lorsque l'indicateur fonctionne lui-même, dans le journal, il écrit soudainement Stack overflow. Lors du débogage, le message "Critical error occurred, debugging stopped" s'affiche. Voici mon fil de discussion similaire: https://www.mql5.com/ru/forum/338301. Mais pendant la compilation, le compilateur ne gronde pas et tout se passe bien. Lors du débogage, il est impossible de déterminer à quel moment le programme se plante.
Peut-être que c'est le compilateur ? Je ne suis pas vraiment intéressé par le compilateur que j'utilise, mais dans mes paramètres, cela ressemble à ceci :
J'ai installé VS, et j'ai donc ce lien dans les paramètres. Le compilateur est donc approprié aussi... ? Mais quel compilateur y avait-il quand je n'avais pas VS, honnêtement je ne m'y suis pas intéressé. Peut-être devrions-nous essayer de revenir à ce compilateur et essayer de compiler le projet avec lui ?
J'ai récemment découvert un symbole sur lequel les chiffres étaient mal réglés. J'ai demandé au courtier de le corriger. Il l'a fait sur place. Je n'ai pas regardé si la valeur de la variable _Digits et Digits() avait changé. Mais c'est un fait que le symbole peut changer ses valeurs à la volée.
La valeur de _Digits n'aurait pas dû changer, au moins parce qu'elle est placée dans un bloc de mémoire en lecture seule.
Pendant le débogage et lorsque l'indicateur fonctionne lui-même, dans le journal, il écrit soudainement Stack overflow. Lors du débogage, le message "Critical error occurred, debugging stopped" s'affiche. Voici mon fil de discussion similaire: https://www.mql5.com/ru/forum/338301. Mais pendant la compilation, le compilateur ne gronde pas et tout se passe bien. Lors du débogage, il est impossible de déterminer à quel moment le programme se plante.
Peut-être que c'est le compilateur ? Je ne suis pas vraiment intéressé par le compilateur que j'utilise, mais dans mes paramètres, cela ressemble à ceci :
J'ai installé VS, et j'ai donc ce lien dans les paramètres. Le compilateur est donc approprié aussi... ? Mais quel compilateur y avait-il quand je n'avais pas VS, honnêtement je ne m'y suis pas intéressé. Peut-être devrions-nous essayer de revenir à ce compilateur et essayer de compiler le projet avec lui ?
Comment changer le compilateur ?
La valeur de _Digits n'aurait pas dû changer, ne serait-ce que parce qu'elle se trouve dans un bloc de mémoire en lecture seule.
Il s'avère alors que cette valeur pourrait être une tricherie.
Cela a toujours été possible (F3). Ils fonctionnent.
par F3 fonctionnent, mais dans le menu ils ne le font pas.
Il s'avère alors que cette valeur peut tricher.
Par conséquent, pour des raisons de rigueur, nous devrions utiliserDigits() au lieu de _Digits. Alors formellement il n'y a pas de contradiction logique - Digits() n'est pas connecté par le modificateur const.
D'après ce que j'ai compris, _Digits était nécessaire pour la compatibilité avec MT4 - rien de plus.
Le script doit-il retourner sum = 0 ?
ou ce script devrait-il même retourner une erreur de compilation?
En C#, le spécificateur const n'est utilisé que pour les expressions constantes calculées à l'étape de la compilation. Le C++ a un analogue pour cela : constexpr,et MQL ne l'a pas.
oui
c'est généralement une question de constructions syntaxiques des langues
dans un langage naturel (en mathématiques), une constante est... Eh bien, c'est une sorte de constante ! ))
En C++, une constante est une machine vérifiant par le compilateur la présence d'une constante dans la portée (ou durée de vie) d'une variable.
En C#, une constante a une signification syntaxique qui est plus proche des règles d'un langage naturel.
et c'est l'objet de cette discussion :
Je pense que cette construction est entièrement conforme à la syntaxe C++, ou du moins MQL4 avait Bid et Ask, et personne n'avait de doutes sur la validité de cette construction.
Sans démagogie, nous avons besoin de la possibilité d'accéder aux prix actuels aussi rapidement que possible. Le profileur montre que l'accès permanent à SymbolInfoDouble() et SymbolInfoTick() diminue la vitesse d'optimisation.