Erreurs, bugs, questions - page 2258
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
Faites une béquille à travers le minuteur.
Vous ne voulez pas faire une béquille. Les développeurs MQ peuvent élargir les possibilités.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
Bugs, bugs, questions
Anatoli Kazharski, 2018.08.20 08:11
Je veux pouvoir suivre les changements de propriétés de tous les graphiques, et pas seulement de celui où se trouve le programme MQL.
Actuellement, l'événementCHARTEVENT_CHART_CHANGE ne contient pas d'autres paramètres :
Événement
Valeur du paramètre id
valeur du paramètre lparam
valeur du paramètre dparam
Valeur du paramètre sparam
L'événement de changement des dimensions du graphique ou de changement des propriétés du graphique via le dialogue des propriétés.
CHARTEVENT_CHART_CHANGE
-
-
-
//---
Pour suivre cet événement sur d'autres graphiques ouverts, le suivi pourrait être activé en spécifiant l'ID du graphique souhaité.
Par exemple, comme ceci :
Comme lparam-paramètre pourrait être l'identifiant du graphique sur lequel les changements ont été effectués. Le paramètre sparam pourrait être le nom du symbole.
Erreur pendant l'exécution :
Résultat : Attendu :
A::f<int>:1 A::f<int>:1
A::f<int>:753790661 A::f<int>:2
A::f<int>:Erreur:4007
Autrement :
Bien. Quelle est la différence ? Pourquoi la taille du tableau est soudainement devenue 753790660 (au lieu de un) et par conséquent la mémoire s'est soudainement épuisée (4007) ? MT5\1881\32
De plus... si vous supprimez littéralement trois caractères de la classe dans le premier cas, le résultat sera également correct.
Merci pour le message.
Fixe.
Pour fonctionner dans la version actuelle, ne spécifiez pas la classe scop lorsque vous déclarez ses méthodes.
Les autres rapports de bogue sont liés à celui-ci et ne seront pas reproduits une fois les corrections apportées.
l'exemple de l'aide ne fonctionne pas :
https://www.mql5.com/ru/docs/basis/function/operationoverload
l'exemple tout en bas de la page ne fonctionne pas, à partir des mots :
Другой пример перегрузки операции индексирования - работа с матрицами. Матрица представляет собою двумерный динамический массив, размеры массивов заранее неопределены. Поэтому нельзя объявить массив вида array[][] без указания размера второго измерения и затем передавать этот массив в качестве параметра. Выходом может служить специальный класс CMatrix, который содержит в себе массив объектов класса CRow.
le compilateur écrit :
l'objet 'CMatrix' ne peut être renvoyé, la copie du constructeur 'CMatrix::CMatrix(const CMatrix &)' n'a pas été trouvée tst.mq5 244 14
l'objet 'CMatrix' ne peut être renvoyé, la copie du constructeur 'CMatrix::CMatrix(const CMatrix &)' n'a pas été trouvée tst.mq5 261 11
l'objet 'CMatrix' ne peut être renvoyé, la copie du constructeur 'CMatrix::CMatrix(const CMatrix &)' n'a pas été trouvée tst.mq5 281 14
l'objet 'CMatrix' ne peut être renvoyé, la copie du constructeur 'CMatrix::CMatrix(const CMatrix &)' n'a pas été trouvée tst.mq5 303 11
4 erreur(s), 0 avertissement(s) 5 1
Erreur de compilation (ME\1881\32)
Et donc :
bien. Quelle différence cela fait-il ?Ce n'est pas la raison.
cela aide beaucoup lors de la lecture du code et permet d'éviter les erreurs dans certaines situations.Notez que cela ne fonctionne pas partout dans MQL :
qu'en C++ il compile sans erreur
Notez que cela ne fonctionne pas partout dans MQL :
qui en C++ compile sans erreur
Le C++ a un don pour la perversion. Peut-être que quelque part dans les macros, cela pourrait être utilisé, mais pas directement.
Il est possible de l'utiliser quelque part dans les macros, mais pas directement.
Les macros n'ont rien à voir avec cela - remplacez-les par un pointeur normal et vous aurez exactement la même syntaxe :
En MQL, vous ne pouvez pas faire explicitement référence à b.A::x, alors qu'en C++ vous le pouvez. Pourquoi une telle restriction ?Les macros n'ont rien à voir avec cela - remplacez-les par un pointeur ordinaire et vous aurez exactement la même syntaxe :
Dans ce cas, c'est justifié. Le problème, c'est qu'il n'est pas évident de savoir pourquoi l'écrire de cette façon. Quand A: : dit déjà tout.
L'option avec ceci - on ne sait pas pourquoi vous l'écrivez de cette façon. Quand A: : dit déjà tout.
Que dit le A: : mis en évidence dans ce cas ?