Erreurs, bugs, questions - page 1205

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
vide, sans un seul indicateur et terminal EA, même chose...
Capturez les indicateurs et les EA en cours d'exécution pièce par pièce pour voir quel est le problème.
Cliquez sur le bouton "Détails" dans la fenêtre de description de l'erreur pour obtenir des détails. Copiez le texte complet ici, s'il vous plaît.
Je suppose que vous le voulez ?
crash --> 000007FCE8441F4F 48396B10 cmp [rbx+0x10], rbp
000007FCE8441F53 7530 jnz 0x7fce8441f85
000007FCE8441F55 488B03 mov rax, [rbx]
000007FCE8441F58 4C8BCF mov r9, rdi
000007FCE8441F5B 4D8BC7 mov r8, r15
000007FCE8441F5E 8BD6 mov edx, esi
000007FCE8441F60 488BCB mov rcx, rbx
: #021 00000000000011C8 EIP : 0000000000000000 ESP : 00000000000000000000
: #022 0000000000001068 EIP : 000007FCF54245DB ESP : 0000006818CFFAC8
000007FCF54245D1:00000A [000007FCF54245DB] NtYieldExecution (ntdll.dll)
000007FCF5426E50:000833 [000007FCF5427683] RtlUnicodeStringToInteger (ntdll.dll)
000007FCF3681828:00001A [000007FCF3681842] BaseThreadInitThunk(kernel32.dll)
000007FCF54774E8:000021 [000007FCF5477509] RtlVerifyVersionInfo (ntdll.dll)
: #023 000000000000111C EIP : 000007FCF54245DB ESP : 0000006818E5FB18
000007FCF54245D1:00000A [000007FCF54245DB] NtYieldExecution (ntdll.dll)
000007FCF5426E50:000833 [000007FCF5427683] RtlUnicodeStringToInteger (ntdll.dll)
000007FCF3681828:00001A [000007FCF3681842] BaseThreadInitThunk (kernel32.dll)
000007FCF54774E8:000021 [000007FCF5477509] RtlVerifyVersionInfo (ntdll.dll)
En analysant l'exemple précédent, nous avons découvert une différence cruciale entre MQL et C++.
En MQL(build 978) le résultat est : 2 (C::g est appelé), et en C++ le résultat est : 3 (D::g est appelé)
Il s'avère donc que MQL donne la priorité à une correspondance exacte du type de l'argument, même s'il est dans une classe de base, alors que C++ donne la priorité à la classe la plus proche possible qui peut ne pas avoir une correspondance exacte du type mais peut avoir une conversion implicite du type.
Veuillez vérifier les résultats sur des compilateurs C++ récents et, si la différence est confirmée, décidez de préférence en faveur du C++ à des fins d'unification.
J'ai envoyé le texte complet dans un message privé.
Le constructeur de copie et l'opérateur d'affectation sont-ils même prévus dans le futur ?
La classe de base A a 15 champs, elle a deux descendants B et C - chacun a +5 champs supplémentaires.
Et le reste est une quête de 20 minutes.
Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading
Bugs, bugs, questions
A100, 2014.08.29 16:28
Erreur lors de la sortie via Print(...)
lors de l'impression, la première partie de la sortie saute de 1 à 53 (chaque fois une partie différente - pas de schéma clair), parfois au milieu.
puis imprime jusqu'à 299 sans saut de page
Si vous avez un peu de temps, essayez de l'exécuter et si vous constatez des sauts dans les résultats, écrivez-moi. S'il n'y a pas de sauts - essayez d'augmenter n (j'ai commencé à sauter à n >= 300) et/ou de supprimer
Sur demande #1060016 | 2014.08.29 16:30https://www.mql5.com/ru/users/A100/servicedesk/closed/14774
Une question s'est posée : "Comment puis-je informer d'un saut d'impression ?" - L'option la plus simple est une ligne unique avec une ligne pointillée à la place des lignes sautées

Lorsque l'utilisateur voit cette ligne, il comprend qu'il y a des omissions et doit se référer au fichier .log (les numéros de ligne ne sont pas nécessaires - juste à titre d'exemple).En analysant l'exemple précédent, nous avons découvert une différence cruciale entre MQL et C++.
En MQL(build 978) le résultat est : 2 (C::g est appelé), et en C++ le résultat est : 3 (D::g est appelé)
Il s'avère donc que MQL donne la priorité à une correspondance exacte du type de l'argument, même s'il est dans une classe de base, alors que C++ donne la priorité à la classe la plus proche possible qui peut ne pas avoir une correspondance exacte du type mais peut avoir une conversion implicite du type.
Veuillez vérifier les résultats sur des compilateurs C++ récents et, si la différence est confirmée, décidez de préférence en faveur du C++ à des fins d'unification.
C'est vrai. La priorité est donnée à une correspondance exacte. Et c'est vraiment bien.
Pourquoi avons-nous besoin d'une telle unification ? Unification du traitement des programmes mal conçus
Le constructeur de copie et l'opérateur d'affectation sont-ils même prévus dans le futur ?
La classe de base A a 15 champs, elle a deux descendants B et C - chacun a +5 champs supplémentaires.
Et le reste est une quête de 20 minutes.
C'est vrai. La priorité est donnée à la correspondance exacte. Et c'est vraiment bien.
Pourquoi avez-vous besoin d'une telle unification ? Unification du traitement des programmes mal conçus
Une unification est nécessaire pour que le même code fonctionne aussi bien avec C++ qu'avec MQL. En C++, cet ordre est fait ( !) pour une raison (sinon il y a des ambiguïtés à un moment donné). A l'origine, je pensais que le compilateur C++ était illogique et/ou avait un bug, mais maintenant je suis enclin à croire qu'il existe des raisons objectives pour une telle approche. Voici un exemple en MQL, qui montre que X: : g est une correspondance complète, mais que Y::g est quand même appelé - comme en C++, ce qui contredit l'exemple précédent https://www.mql5.com/ru/forum/1111/page1223#comment_1074757.
Résultat : 3
Il s'avère que le C++ a un ordre "illogique" mais non ambigu, tandis que MQL a un ordre aléatoire - s'il y a une correspondance exacte des types, une classe de base est appelée dans un cas et une classe dérivée dans l'autre.