Je suis novice en programmation, aidez-moi à comprendre. Par exemple, il existe un tableau dans MQL4
double masse[][6]
1. Comment le passer dans une dll en C++ ?
2. Comment l'afficher dans une fenêtre popup en C++ ?
Lorsqu'il s'agit de sculpter une dll fonctionnelle et non redondante, divers tracas sont de trop, alors :
-> 1. réorganiser le problème de sorte que seuls les tableaux unidimensionnels doivent être transmis (méthode "bag-of-tags") ;
-> 2. l'idée de base de la dll est qu'il s'agit d'une bibliothèque de fonctions, c'est-à-dire exactement un module de _calcul_, donc évitez à tout prix d'utiliser des éléments graphiques/fenêtres ici ;
-> 3. ( un tel point sera bientôt formé ) : lors du passage de chaînes de caractères, le moindre mal de tête est lorsqu'il s'agit de chaînes ansi, c'est-à-dire pour Unicode avec ses sous-espèces - voir point 1. 1, précédemment converti en char, c'est-à-dire en octets, en utilisant mql ;
-> 4. (Si votre dll utilise des objets pour les calculs, il est préférable de les envelopper dans un seul, d'obtenir son handle à l'initialisation, de le passer à mql-program et ensuite d'appeler les méthodes, en se référant à l'objet wrapper par ce handle.
Je pense que le moyen le plus simple pour vous de mettre cela en œuvre est de passer par un fichier - décharger la dinde, charger le module C++ et le supprimer, et ainsi de suite.
TheXpert:
В MQL4 нет многомерных массивов. Передавайте как одномерный, главное правильно размер высчитать и передать.
C'est-à-dire que si array[10][6] alors sa taille est unidimensionnelle 60 ?
Oui.
Donc, en C++, vous devez créer une classe qui reconvertira un tableau unidimensionnel en un tableau bidimensionnel ?
Oui. Bien sûr.
J'ai récemment terminé l'écriture d'un tel cours. Il s'agit réellement d'un tableau dynamique multidimensionnel. C'est-à-dire qu'il est possible de changer le nombre de mesures à la volée sans casser la structure des données.
Et il peut aussi être initialisé par un pointeur vers un tableau. J'ai surchargé les opérateurs. J'ai eu 348 surcharges :-))
C'est à peu près la même chose pour les opérateurs :
a4Arr[1][2][3] += a3Arr[1][0]; // В указанное 4-е измерение массива a4Arr добавляется содержимое 3-го измерения массива a3Arr.J'ai effectué des opérations mathématiques et diverses manipulations pour elle. Il y a un reverse pour l'index et beaucoup d'autres choses avec lesquelles je dois travailler.
========================
Lamultidimensionnalité du tableau n'est qu'une interface. Il peut cacher un tableau de tableaux, un tableau de pointeurs vers des tableaux, un tableau de classes de conteneurs, une classe de conteneurs, etc.
Dans notre cas, seule l'interprétation d'un tableau unidimensionnel comme un tableau multidimensionnel convient. Sinon, il n'y a aucun moyen de le passer depuis MQL4.
Par exemple, en C++, faut-il créer une classe qui reconvertit un tableau unidimensionnel en un tableau bidimensionnel ?
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
J'ai besoin de contrôler l'état des tableaux dans mon conseiller expert. Pour cela, je veux créer un dll en C++ qui recevrait des tableaux à deux dimensions de MQL4 et afficherait leur état dans une fenêtre pop-up.
D'après ce que j'ai compris, je dois passer un tableau à deux dimensions de MQL4 à la dll, mais comment passer un tableau à deux dimensions, si sa dimensionnalité dans la première dimension est inconnue et change dans la fonction dans MQL4.