Passer un tableau à deux dimensions de MQL4 à la dll - page 3

 
TheXpert:
Il n'y a pas de tableaux multidimensionnels dans MQL4. Transmettez-le comme un unidimensionnel. L'essentiel est de calculer correctement la taille et de le transmettre.

int ArrayResize( object&array[], int new_size)
Définit la nouvelle taille dans la première dimension du tableau. Si elle est exécutée avec succès, la fonction renvoie le nombre de tous les éléments contenus dans le tableau après le redimensionnement, sinon elle renvoie -1 et le tableau n'est pas redimensionné.
Remarque : un tableau déclaré localement dans une fonction qui a été redimensionné restera inchangé à la fin de la fonction. Lorsque la fonction est appelée à nouveau, un tel tableau aura une taille différente de la taille déclarée.
Paramètres :
tableau[] - Tableau pour le redimensionnement.
nouvelle_taille - Nouvelle taille pour la première dimension.
Exemple :
double array1[][4] ; int element_count=ArrayResize(array1, 20) ; // nouvelle taille - 80 éléments


Il s'agit d'une citation de l'aide et d'une réponse simultanée à l'auteur du message sur le fait que tous les tableaux dans MQL sont unidimensionnels.

 
Debugger:

Il s'agit d'une citation de l'aide et d'une réponse simultanée à l'auteur du message sur le fait que tous les tableaux dans MQL sont unidimensionnels.

Il s'agit d'une fonction au-dessus d'un tableau unidimensionnel. Essayez de prouver le contraire.
 
Pourquoi réinventer la roue et essayer de paraître plus intelligent que les développeurs C++ ?
 
Debugger:
Pourquoi réinventer la roue et essayer de paraître plus intelligent que les développeurs C++ ?

Ce que nous pensons et ce qui est réellement là sont O-O-O souvent des choses DIFFÉRENTES, et encore plus lorsque nous essayons de penser pour les autres !

Vous pensez vraiment que Vadim n'a rien de mieux à faire que de "paraître plus intelligent que les développeurs" ? Vous connaissez si bien l'homme pour fantasmer comme ça ? ! J'aurais peur de vivre dans un monde déformé à ce point... :)))

Et si une personne change/modifie/redessine quelque chose qui a été créé auparavant par quelqu'un d'autre, c'est son droit ! Il est NORMAL de changer le monde pour soi, même si c'est contraire à la règle "de se plier au monde qui change"... ;)

 

Je me demande où se trouve un tel "vélo" ? :-))

Avant d'écrire, j'ai tout fouillé. Pas même à Boost. Sans parler du C++, qui n'a rien à voir avec cela, et il n'y a rien de tel dans la STL non plus.

D'ailleurs, il n'existe pas de solution complète à ce problème. Je n'entrerai pas dans les détails, mais les capacités du C++ sont insuffisantes pour résoudre ce problème.

J'ai consulté sur Windgrad. Il y a de bons programmeurs là-bas. Dès qu'ils ont appris la tâche, ils ont immédiatement prédit certains problèmes spécifiques. Bien sûr, je les ai presque tous résolus. Il en restait d'insolubles, en principe. Il s'agit de problèmes liés à la manipulation du contenu des tableaux par les opérateurs d'indexation "[]". Personne sur Internet ne sait comment le faire. J'ai fait une béquille. Maintenant, nous pouvons presque entièrement travailler avec les opérateurs "[]" mais nous devons fournir un certain type d'index à la dernière dimension (ce que nous pouvons facilement oublier de faire et le compilateur ne nous en avertira pas). Il fonctionne alors comme un tableau multidimensionnel habituel avec une indexation par []. C'est-à-dire que l'opérateur est surchargé 4 fois avec un type d'index différent. Une surcharge renvoie le contenu de la cellule par le dernier calcul d'index linéaire par les opérateurs [] précédents. Les autres surcharges renvoient un objet afin que l'opérateur [] puisse être utilisé à nouveau. Dans certains cas, un opérateur de remplacement de type est déclenché et renvoie le contenu de la dernière cellule consultée. Dans certains cas, cela ne fonctionne pas. Il peut y avoir des problèmes dont vous ne prendrez connaissance qu'une fois que le programme ne fonctionnera plus correctement. Dans certains cas, le compilateur aide. Dans d'autres, ce sont les exceptions mises en place pour les éventuelles erreurs des utilisateurs. J'ai essayé de prévoir tous les cas de figure.

Les principaux problèmes sont les suivants :

a[0][1][2] = a[0][1][3] + a[0][5][2] / a[0][8][12]; // Здесь на всякий случай надо в последнем измерении использовать тип _SIZE_T. Для логических операций тоже надо.

Il existe la méthode at(). Il remplace entièrement et complètement les opérateurs "[]".

La classe est protégée par une section critique pour fonctionner dans des applications multithreads.

 
Zhunko:

Non, ça me dépasse, je ne peux pas le lire en silence.

Vous êtes un cycliste nubile. L'implémentation la plus simple a été postée il n'y a pas si longtemps dans mql5 ( !) avec une taille de ligne de 100 lignes.

 
TheXpert:

Non, ça me dépasse, je ne peux pas le lire en silence.

Vous êtes un cycliste nubile. L'implémentation la plus simple a été postée il n'y a pas si longtemps dans mql5 ( !) avec une taille de ligne de 100 lignes.

C'est n'importe quoi là-bas.
 
Zhunko:
C'est des conneries.

Oh oui, pas de conneries seulement de la part du grand gourou Vadim, agenouillez-vous devant son visage.

Ugh... Les sous-performants ont le plus gros ego. Ils ont appris à utiliser msdn et l'aide, ils ont écrit plus de 1000 lignes de texte et c'est tout, je suis une star. J'ai entendu quelque part le mot singleton et XP, c'est tout, je connais les modèles de programmation et les méthodes. Je suis un putain de designer...

Tu devrais avoir honte de toi, tu n'es pas un garçon.

 
Vadim ! Cela vous intéresse-t-il de perdre votre temps avec CE niveau d'argumentation ("vous êtes vous-même un imbécile")par des personnes qui "s'autodétruisent"?
 
TheXpert:

Oh oui, pas de conneries seulement de la part du grand gourou Vadim, agenouillez-vous devant son visage.

Ugh... Les sous-performants ont le plus gros ego. Ils ont appris à utiliser msdn et l'aide, ils ont écrit plus de 1000 lignes de texte et c'est tout, je suis une star. J'ai entendu quelque part le mot singleton et XP, c'est tout, je connais les modèles de programmation et les méthodes. Je suis un putain de designer...

Tu devrais avoir honte de toi, tu n'es pas un garçon.


Andrew, pourquoi ne m'as-tu pas montré quel super-programmeur tu es ? La première étape consiste à expliquer comment vous avez résolu le problème. J'ai écrit comment je l'ai résolu. Maintenant tu me dis. Ensuite, nous examinerons ensemble vos idées fausses.

Encore une fois, je ne suis pas un programmeur. Je suis meilleur que ça.

===========

D'ailleurs, je n'ai pas de projets de moins de 1000 lignes. Généralement des dizaines de fois plus. Cette classe (base) fait 5110 lignes + 2 2500 lignes chacune de classe héritée d'elle. Sans compter une douzaine d'autres similaires utilisés dans le projet.

Raison: