Erreurs, bugs, questions - page 2471
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
Un nouvel objet l est créé. Et il n'est pas supprimé.
logiquement
Mais la portée des variablesCChartObjectLabel *LabelUP,*LabelDN ; est globale ?
Je peux donc modifier la variable à n'importe quel moment du code ?
Je passe un pointeur à la fonction CreateLabel(), pourquoi dois-je créer une nouvelle copie ?
imho, il ne fonctionne pas correctement.
HH : Si je crée des objets dans OnInit() et que je travaille ensuite avec eux dans CreateLabel() (c'est-à-dire que je crée les objets séparément et que je travaille avec eux par pointeur), tout fonctionnera correctement - mais je ne me souviens pas d'un cas dans d'autres compilateurs pour passer un pointeur à une fonction pour créer un nouvel objet - un pointeur, c'est un pointeur !
logiquement
mais mon champ d'application est global ? - cela signifie que je peux modifier une variable dans n'importe quelle partie de mon code ?
Je passe un pointeur à CreateLabel(), pourquoi est-ce que je reçois une nouvelle copie ?
A mon avis, cela ne fonctionne pas correctement.
logiquement
Mais la portée des variablesCChartObjectLabel *LabelUP,*LabelDN ; est globale ?
Je peux donc modifier la variable à n'importe quel moment du code ?
Je passe un pointeur à la fonction CreateLabel(), pourquoi dois-je créer une nouvelle copie ?
Imho, cela ne fonctionne pas correctement
En réassignant un pointeur à un nouvel objet, on perd l'objet précédent, qui était pointé par le pointeur réassigné.
non, un pointeur est un pointeur, dans MQL c'est un descripteur, pas le point - mais il n'est pas correct de créer une nouvelle copie de l'objet, cela fonctionne correctement maintenant :
mais si vous suivez votre logique, alors ce code créera aussi une copie de l'objet l dans la fonction SetLabel() - j'ai passé un pointeur, pas une référence ?
nouveau devrait être supprimé. Les objets existent déjà et les pointeurs vers eux aussi.
la question n'est pas de savoir comment résoudre le problème, mais pourquoi dans la portée globale de la variableCChartObjectLabel *LabelUP,*LabelDN ;- a perdu le pointeur !
non, un pointeur est un pointeur, dans MQL c'est un descripteur, pas le point - mais il n'est pas correct de créer une nouvelle copie de l'objet, cela fonctionne correctement maintenant :
mais si vous suivez votre logique, alors ce code créera aussi une copie de l'objet l dans la fonction SetLabel() - j'ai passé un pointeur, pas une référence ?
Non. Ici, l est le paramètre de la méthode par lequel nous passons le pointeur nécessaire. Tout va bien ici. Le pointeur reste ici sur l'objet créé précédemment. Ici, on ne crée pas un nouvel objet et on ne lui réaffecte pas le pointeur avec la perte de l'objet précédent.
il ne fonctionne toujours pas correctement
ces "pointeurs" en MQL sont faits pour fonctionner dans la portée de la classe, je ne veux pas créer une classe, je déclare un pointeur global et le passe ensuite à n'importe quelle fonction, et le fait que je crée un descripteur de l'objet dans cette fonction n'est pas la raison de détruire l'objet en sortant de la portée locale de la fonction
Je suis un peu occupé en ce moment, mais j'ai besoin de faire des exemples de test sans graphiques - je pense que la même chose se produira si vous entrez dans la fonction avec un pointeur avec la valeur POINTER_INVALID, vous sortirez avec le même POINTER_INVALID , par référence, tout fonctionnera correctement, mais je pense que vous ne pouvez pas passer un pointeur avec POINTER_INVALID par référence - il y aura une erreur d'accès au pointeur
tout ne fonctionne pas correctement de toute façon
ces "pointeurs" en MQL sont faits pour fonctionner dans la portée de la classe, je ne veux pas créer une classe, je me contente de forer et de déclarer un pointeur dans la portée globale, puis de le passer à n'importe quelle fonction et le fait que je crée un descripteur d'objet dans cette fonction n'est pas la raison de détruire l'objet en sortant de la portée locale de la fonction
Je pense que ce sera le même problème, si vous entrez avec une valeur POINTER_INVALID dans cette fonction, vous sortirez avec la même valeur POINTER_INVALID, par référence, tout fonctionnera correctement, mais par référence vous ne pouvez pas passer un pointeur avec POINTER_INVALID - une erreur d'accès au pointeur se produira.
J'ai été surpris de constater qu'il était possible de déclarer un typedef avec un pointeur vers une fonction template.
Cependant, le bonheur n'a pas duré longtemps.
Le typedef avec un pointeur vers une fonction modèle est-il une fonctionnalité prévue ?
Lorsque vous travaillez avec typedef, l'utilisation d'une fonction template avec une spécialisation explicite ne génère pas de code pour ce template.
Je crée un symbole personnalisé et je le remplis avec 25 ans de barres quotidiennes, cela devrait peser environ 400kb. Cependant, dans le dossier du symbole, des fichiers .hcc sont créés avec une taille totale de 15 mb ! En plus, tout cela prend environ 20 secondes ! C'est hors de question... Comment expliquez-vous cela ?