Passe uma matriz bidimensional da MQL4 para dll

 

Preciso controlar o estado das matrizes em meu Conselheiro Especialista. Para isso, quero criar uma dll em C++ que receba arrays bidimensionais da MQL4 e que saia seu estado em uma janela pop-up.

Pelo que entendi, preciso passar uma matriz bidimensional da MQL4 para a dll, mas como passar uma matriz bidimensional, se sua dimensionalidade na primeira dimensão for desconhecida e mudanças na função na MQL4.

 
 

Sou novo em programação, por favor, ajude-me a entender. Por exemplo, há uma matriz na MQL4

massa dupla[][6][7]

1. Como passá-lo para dll em C++?

2. Como exibi-la em uma janela popup em C++?

 

Ao esculpir uma dll funcional e não redundante, vários incômodos são demais, portanto :

-> 1. reordenar o problema de modo que apenas as matrizes unidimensionais precisem ser passadas (modo "saco de etiquetas");

-> A idéia básica da dll é que ela é uma biblioteca de funções, ou seja, exatamente um módulo _calculador_, portanto evite usar qualquer elemento gráfico/janela aqui a qualquer custo;

-> 3. ( tal ponto será formado em breve ) : ao passar as cordas, a menor dor de cabeça é quando elas são ansiosas, ou seja, para Unicode com sua subespécie - ver item 1. 1, previamente convertido em char, ou seja, bytes, usando mql;

-> 4. (Se sua dll usa objetos para cálculos, é melhor embrulhá-los em um só, obter sua alça na inicialização, passá-los para o programa mql e depois chamar os métodos, referindo-se ao objeto de embrulho por esta alça.

 

Acho que a maneira mais fácil de implementar isto é através de um arquivo - descarregar o peru, carregar o módulo C++ e apagá-lo, e assim por diante.

 
Não há matrizes multidimensionais na MQL4. Transmita-o como unidimensional, o principal é calcular o tamanho e transmiti-lo corretamente.
 

TheXpert:
В MQL4 нет многомерных массивов. Передавайте как одномерный, главное правильно размер высчитать и передать.

Isto é, se a matriz[10][6], então seu tamanho é 60?

 
Barbarian:
Sim.
 
TheXpert:
Sim.
ou seja, em C++, você precisa criar uma classe que converta uma matriz unidimensional de volta para uma bidimensional?
 
Barbarian:
Então, em C++, você precisa criar uma classe que irá converter uma matriz unidimensional de volta em bidimensional?

Sim, claro.

Terminei recentemente de escrever uma aula desse tipo. É realmente uma matriz dinâmica multidimensional. Ou seja, é possível alterar o número de medidas em tempo real sem quebrar a estrutura de dados.

E também pode ser inicializada por um ponteiro para uma matriz. Eu sobrecarreguei os operadores. Eu tenho 348 sobrecargas :-))

Aproximadamente o mesmo com os operadores:

a4Arr[1][2][3] += a3Arr[1][0]; // В указанное 4-е измерение массива a4Arr добавляется содержимое 3-го измерения массива a3Arr.
Fiz operações matemáticas e várias manipulações para isso. Há um reverso para o índice e muitas outras coisas com as quais preciso trabalhar.

========================

A multidimensionalidade da matriz é apenas uma interface. Ele pode esconder uma série de matrizes, uma série de ponteiros para matrizes, uma série de classes de contêineres, uma classe de contêineres, etc.

Em nosso caso, apenas a interpretação de uma matriz unidimensional como multidimensional é adequada. Caso contrário, não há como passá-lo da MQL4.

 
Barbarian:
Isto é, em C++, você precisa criar uma classe que converta uma matriz unidimensional de volta para uma bidimensional?
Não necessariamente. Você pode calcular o índice. Converter uma matriz a cada vez é muito trabalho.