Компиляция — это процесс перевода исходного кода MQL4/MQL5-программы на машинный язык. Ее результатом является создание исполняемого файла программы (*EX4 или *.EX5), который может быть запущен в торговой платформе. Скомпилировать можно любой файл (*.MQ4, *.MQ5 или *.MQH), однако исполняемый файл (*.EX4 или *.EX5) может быть получен только в...
Je suis tombé sur une "fonctionnalité"... j'ai passé plus d'une heure à traduire l'indicateur de 4 à 5. je n'arrivais pas à trouver où se trouvait l'erreur, car le code semblait être multiplateforme. finalement, la voici, à un endroit peu visible. pour une raison quelconque, ils ont échangé deux paramètres :
Dans quatre, il était possible d'appeler l'indicateur lui-même via iCustom pour obtenir un multitimeframe. Pouvez-vous partager un lien/exemple pour cinq ans ? Pour une raison quelconque, je n'arrive pas à le faire par analogie :(
Mais le conseiller de combat s'est retrouvé dans une situation où le conseiller a cessé de travailler. J'ai réussi à trouver la cause du problème. Une nuance cool, qui est presque impossible à remarquer.
Vous pouvez vraiment vous en faire une idée en essayant de voir le problème dans ce code.
// В коде содержится ошибка, которая остановит выполнение этого советника.inputint Range = 0;
class A
{
public:
void f() {}
};
A* const a = new A;
voidOnInit() { a.f(); }
voidOnDeinit( constint ) { delete a; }
Mais le conseiller de combat s'est retrouvé dans une situation où le conseiller a cessé de travailler. J'ai réussi à trouver la cause du problème. Une nuance cool, qui est presque impossible à remarquer.
Vous pouvez vraiment vous en faire une idée en essayant de voir le problème dans ce code.
L'une des principales règles est qu'à quel niveau vous construisez un objet, vous devez le détruire au même niveau. Pas plus haut ou plus bas.
Slava: L'une des principales règles est qu'au niveau où vous construisez un objet, au même niveau vous devez le détruire. Pas plus haut ou plus bas.
Merci, bonne règle. Je suis devenu une victime de ma propre incompétence. Vraiment, il faut un peu plus de règles pour un cas aussi évident.
// В коде содержится ошибка, которая остановит выполнение этого советника.inputint Range = 0;
class A
{
void f() {}
public:
A()
{
static A* Tmp = &this;
Tmp.f();
}
};
voidOnInit() { A a; }
Peut-être pour les deux cas Avertissement intelligent à faire ?
Mais le conseiller de combat s'est retrouvé dans une situation où le conseiller a cessé de travailler. J'ai réussi à trouver la cause du problème. Une nuance cool, qui est presque impossible à remarquer.
Vous pouvez vraiment vous en faire une idée en essayant de voir le problème dans ce code.
Quel est le problème avec ce code ? Deinit a cloué l'objet par pointeur constant (je sais ce qu'est le handle ici). Tirer sur des membres normaux dans le style C++, ou alors les créateurs ont dissous tout le monde))).
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Pouvez-vous me dire pourquoi le compilateur a commencé à se plaindre à ce sujet (captures d'écran jointes) ?
il y a un an tout allait bien, mais maintenant je mets le dernier terminal, compile et ceci
où puis-je trouver des réponses à ces messages?
et comment résoudre correctement cet avertissement ?
mise à jour. ajout de la 3ème capture d'écran - même message sur le code inoffensif
et 4ème capture d'écran
quelle est la rigueur du compilateur et comment la résoudre ?
J'ai rencontré une telle particularité.
Si lors de la définition d'une classe avec des champs statiques son objet est créé immédiatement, il y aura une erreur de compilation.
Dans la dernière version, le compilateur ne se plaignait pas de la variable sans type dans la classe. Mais l'EA a planté au démarrage
Je suis tombé sur une "fonctionnalité"... j'ai passé plus d'une heure à traduire l'indicateur de 4 à 5. je n'arrivais pas à trouver où se trouvait l'erreur, car le code semblait être multiplateforme. finalement, la voici, à un endroit peu visible. pour une raison quelconque, ils ont échangé deux paramètres :
amélioration ?
Y en a-t-il d'autres ?
StringConcatenate
il y en a probablement plus, je suis également intéressé par une liste complète de ces fonctions
---
cela peut valoir la peine de chercher #endif dans la bibliothèque standard
Mais le conseiller de combat s'est retrouvé dans une situation où le conseiller a cessé de travailler. J'ai réussi à trouver la cause du problème. Une nuance cool, qui est presque impossible à remarquer.
Vous pouvez vraiment vous en faire une idée en essayant de voir le problème dans ce code.
Mais le conseiller de combat s'est retrouvé dans une situation où le conseiller a cessé de travailler. J'ai réussi à trouver la cause du problème. Une nuance cool, qui est presque impossible à remarquer.
Vous pouvez vraiment vous en faire une idée en essayant de voir le problème dans ce code.
L'une des principales règles est qu'au niveau où vous construisez un objet, au même niveau vous devez le détruire. Pas plus haut ou plus bas.
Merci, bonne règle. Je suis devenu une victime de ma propre incompétence. Vraiment, il faut un peu plus de règles pour un cas aussi évident.
Peut-être pour les deux cas Avertissement intelligent à faire ?
Mais le conseiller de combat s'est retrouvé dans une situation où le conseiller a cessé de travailler. J'ai réussi à trouver la cause du problème. Une nuance cool, qui est presque impossible à remarquer.
Vous pouvez vraiment vous en faire une idée en essayant de voir le problème dans ce code.