Questions des débutants MQL5 MT5 MetaTrader 5 - page 1333
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
Merci pour la réponse, vous n'êtes pas maléfique du tout)
Maintenant tout a un sens)
UPD
Cette construction fonctionne aussi
Faites attention à ce que la méthode At() renvoie. Si elle renvoie NULL, vous vous écraserez sur une erreur critique. Avant d'accéder à un pointeur sur un objet, vérifiez qu'il n'est pas NULL.
Déjà remarqué)
La solution consiste donc à déclarer des objets globalement vides.....
Et si vous ne savez pas à l'avance combien il y en aura ? Il suffit de déclarer "avec réserve" :)
P.S. Je n'ai pas trouvé cette façon de déclarer des objets dans l'aide intégrée.
Il était une fois Artyom qui m'a écrit cette classe. Je ne peux pas expliquer en détail comment cela fonctionne. Mais Artem se souviendra et pourra expliquer. Voici la classe elle-même
Et voici la boucle de création des pointeurs dans OnInit()
et dans OnTimer()
ArraySize(Rates) est la taille du tableau de structures dans lequel sont listés les caractères à travailler.
Une fois, Artyom m'a écrit cette classe. Je ne peux pas expliquer en détail comment cela fonctionne. Mais Artyom s'en souviendra et sera capable de l'expliquer. Eh bien, voici la classe elle-même
Et voici la boucle de création des pointeurs dans OnInit()
et dans OnTimer()
ArraySize(Rates) est la taille du tableau de structures dans lequel sont listés les caractères à travailler.
Ici :
Je le ferais avant le total - simplement pour la raison que vous lisez les caractères du tableau Rates (n'est-ce pas ?), créez des instances de la nouvelle classe bar et les ajoutez à la liste.
En cas d'erreur d'addition, la taille de la liste des pointeurs vers les instances de la nouvelle classe de barres ne correspondra pas à la taille du tableau Rates.
En général, ça doit être quelque chose comme ça :
Et c'est là que vous devez également vérifier si l'ajout à la liste est réussi :
quelque chose comme ça :
pour éviter les fuites de mémoire lorsqu'un pointeur vers un nouvel objet est ajouté par erreur à la listeIci :
Je ferais avant le total - simplement pour la raison que vous lisez les caractères du tableau Rates (n'est-ce pas ?), créez des instances de la nouvelle classe bar et les ajoutez à la liste.
En cas d'erreur d'addition, la taille de la liste des pointeurs vers les instances de la nouvelle classe de barres ne correspondra pas à la taille du tableau Rates.
En général, ça doit être quelque chose comme ça :
Et c'est là que vous devez également vérifier si l'ajout à la liste est réussi :
quelque chose comme ça :
pour éviter les fuites de mémoire lorsqu'un pointeur vers un nouvel objet est ajouté par erreur à la listeMerci. J'ai compris, je vais corriger comme ça :))))
Je déteste l'opérateur continue; et j'essaie de ne pas l'utiliser. Exclusivement dans les cas désespérés.
comment il diffère de
Une autre chose est qu'en cas d'erreur, le pointeur d'échec est supprimé... Mais même ici, nous pouvons nous passer de continue détesté ; simplement en supprimant Print(). C'était nécessaire pendant le débogage et pour essayer de comprendre ce qui se passe, et si pendant le travail une erreur se produit, je ne comprendrai pas ce qui ne va pas de toute façon... C'est plus facile de réinstaller l'OS que de comprendre les journaux.Puisque nous sommes sur le sujet, dites-nous, sans entrer dans les détails, quelle est la différence entre un pointeur et une variable de classe, et laquelle est préférable. Je peux lire sur Internet des détails difficiles à comprendre. Une compréhension superficielle me suffit, pour ainsi dire...
Faites attention à ce que la méthode At() renvoie. Si elle renvoie NULL, vous vous écraserez sur une erreur critique. Avant d'accéder à un pointeur sur un objet, vérifiez qu'il n'est pas NULL.
Artem, merci pour cette précieuse remarque ;)
Merci. J'ai compris, je vais arranger ça comme ça... :)))
Je déteste l'opérateur continue; et j'essaie de ne pas l'utiliser. Exclusivement dans les cas désespérés.
En quoi il diffère de
L'itération de la boucle ne se terminera pas et n'en commencera pas une nouvelle, mais elle passera à l'itération suivante. La logique va changer.
Une fois, Artyom m'a écrit cette classe. Je ne peux pas expliquer en détail comment cela fonctionne. Mais Artyom s'en souviendra et sera capable de l'expliquer. Bref, voici la classe elle-même
Alexey, merci pour cette réponse si détaillée.
Le but de la variable ret dans le fragment de code cité n'est pas clair...
Dans quel but est-il calculé, si dans tous les cas la méthode renvoie array[0] ?
P.S.
Et pourquoi utiliser cette méthode dans une classe? Nous travaillons avec les membres de cette classe particulière...
Merci. J'ai compris, je vais arranger ça comme ça... :)))
Je déteste l'opérateur continue; et j'essaie de ne pas l'utiliser. Exclusivement dans les cas désespérés.
comment il diffère de
Une autre chose est que, lorsqu'une erreur se produit, vous supprimez le pointeur d'échec... Mais même ici, vous pouvez vous passer de continue détesté ; supprimez simplement Print(). C'était nécessaire pendant le débogage et pour essayer de comprendre ce qui se passe, et si pendant le travail une erreur se produit, je ne comprendrai pas ce qui ne va pas de toute façon... Je préfère réinstaller l'OS que de comprendre les logs.Puisque nous sommes sur le sujet, dites-nous, sans entrer dans les détails, quelle est la différence entre un pointeur et une variable de classe, et laquelle est préférable. Je peux lire sur Internet des détails difficiles à comprendre. Une compréhension superficielle me suffit, pour ainsi dire.
L'itération du cycle ne se terminera pas et n'en commencera pas une nouvelle, mais passera à la suivante. La logique va changer.
Alexey, merci pour cette réponse si détaillée.
Le but de la variable ret dans le fragment de code donné n'est pas clair...
Pourquoi est-il calculé si la méthode renvoie de toute façon le tableau[0] ?