Erreurs, bugs, questions - page 2703
![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
Ne devrait-il pas y avoir une erreur lors de la compilation de ce code indiquant que la fonction devrait retourner une valeur ?
il devrait
Il est fort probable que vous n'ayez pas accédé à cette méthode et que le compilateur n'ait pas inclus cette partie du code dans le fichier exécutable.
devrait
Il est fort probable que vous n'ayez pas accédé à cette méthode et que le compilateur n'ait pas inclus ce fragment de code dans le fichier exécutable.
Mais si je désigne la fonction Test() dans la même classe et que je l'implémente de cette façon :
int CMapManager::Test() { }
L'erreur se produira, bien que je n'aie pas non plus accédé à cette fonction nulle part.
Mais si je désigne la fonction Test() dans la même classe et que je l'implémente de cette façon :
Une erreur se produit, même si je n'ai pas accédé à cette fonction nulle part non plus.
parce que cette méthode n'est pas un modèle - il n'y a pas de modèle
un template est essentiellement une substitution de macro, dans laquelle le compilateur insère les types nécessaires lors de la détection des appels de fonctions(méthodes de classe)
Cette "substitution" va "générer" des fonctions avec des types de données spécifiques.
Voici à peu près comment cela fonctionne
parce que cette méthode n'est pas un modèle - il n'y a pas de modèle
un modèle est essentiellement une substitution de macro, dans laquelle le compilateur substitue les types nécessaires lors de la détection des appels de fonction(méthode de classe).
Cette "substitution" va "générer" des fonctions avec des types de données spécifiques.
Voici à peu près comment cela fonctionne
C'est à peu près comme ça que je vois les choses, merci. Mais la question est de savoir pourquoi, à l'étape "avant la génération", nous ne devrions pas informer que la valeur int devrait être retournée ?
Après tout, quelles que soient les fonctions générées, elles renverront toutes une valeur de type int.
C'est à peu près comme ça que je vois les choses, merci. Mais, la question est différente, pourquoi à l'étape "avant la génération" nous n'informons pas que nous devons retourner une valeur int ?
Après tout, quelles que soient les fonctions générées, elles renverront toutes une valeur de type int.
Vous et moi avons fait la deuxième manche - nous donnerons les mêmes réponses à la même question ;)))
pas d'appel - pas d'application du modèle, c'est tout - c'est comme ça que ça marche
)))
esquissez le script et essayez-le
comme ça :
il compile comme ceci, puis ouvrez vos commentaires - il y aura des erreurs
J'ai raté quelque chose quelque part, en général, je cherche une prise dans un tel code :
2020.04.12 01:40:16.652 tst (EURUSD,H1) 0.00000 1.00000
2020.04.12 01:40:16.652 tst (EURUSD,H1) 2.00000 3.00000
2020.04.12 01:40:16.652 tst (EURUSD,H1) 4.00000 5.00000
2020.04.12 01:40:16.652 tst (EURUSD,H1) 6.00000 7.00000
2020.04.12 01:40:16.652 tst (EURUSD,H1) 8.00000 9.00000
2020.04.12 01:40:16.652 tst (EURUSD,H1) 10.00000 11.00000
2020.04.12 01:40:16.652 tst (EURUSD,H1) 12.00000 13.00000
2020.04.12 01:40:16.652 tst (EURUSD,H1) 14.00000 15.00000
2020.04.12 01:40:16.652 tst (EURUSD,H1) 16.00000 17.00000
2020.04.12 01:40:16.652 tst (EURUSD,H1) 18.00000 19.00000
c'est déroutant qu'il soit si facile de créer un tableau à deux dimensions et que l'affectation sans description du constructeur de copie fonctionne dès le départ
Qu'est-ce qui peut ne pas fonctionner correctement dans mon code ?
PAS DE DÉCOMPILATION AUTORISÉE !
Juste au cas où, y a-t-il un moyen de faire en sorte que la fonctionStringToCharArray copie des octets sans conversion ? J'ai essayé tous les CP_XXX, aucun d'entre eux ne fournit de copies 1 pour 1 dans le cas général. Voici un exemple :
La façon d'obtenir l'octet 0x81 peut être différente, ici il est placé "en tête" pour la simplicité. Si vous n'utilisez pas la copie manuelle octet par octet (comme dans la ligne non mentionnée), la fonction StringToCharArray convertit l'octet 129 (0x81) en 63.
Jusqu'à présent, j'ai dû remplacer StringToCharArray par une boucle, mais peut-être existe-t-il un CP_XXX secret ?
Juste au cas où, y a-t-il un moyen de faire en sorte que la fonction StringToCharArray copie des octets sans conversion ? J'ai essayé tous les CP_XXX, aucun d'entre eux ne fournit de copies 1 pour 1 dans le cas général. Voici un exemple :
La façon d'obtenir l'octet 0x81 peut être différente, ici il est placé "en tête" pour la simplicité. Si vous n'utilisez pas la copie manuelle octet par octet (comme dans la ligne non mentionnée), la fonction StringToCharArray convertit l'octet 129 (0x81) en 63.
J'ai dû remplacer StringToCharArray par une boucle pour le moment, mais peut-être y a-t-il un CP_XXX secret ?
2020.04.12 15:57:37.812 tst1 (EURUSD,H1) 129 32 116 101 115 116
perte éventuelle de données due à la conversion de type
Des idées ?