从MQL4到dll传递一个二维数组

 

我需要在我的专家顾问中控制数组的状态。为此,我想在C++中创建一个dll,从MQL4中接收二维数组,并在一个弹出式窗口中输出它们的状态。

据我所知,我需要从MQL4中传递一个二维数组到dll中,但是如果二维数组在第一维中的维度未知,并且在MQL4中的函数中发生变化,那么如何传递二维数组。

 
 

我是编程新手,请帮助我理解。例如,在MQL4中有一个数组

双重质量[][6]

1.如何在C++中把它传入dll?

2.如何在C++中以弹出窗口的方式显示?

 

当雕刻一个工作和非冗余的dll时,各种麻烦太多,所以:

-> 3.( 这样的观点很快就会形成):当传递字符串时,最让人头痛的是它们是ansi-strings,即对于Unicode及其子种--见第1项。1,之前用mql转换为char,即字节。

-> 4.(如果你的dll使用对象进行计算,最好把它们包在一个里面,在初始化时得到它的句柄,把它传给mql-program,然后调用方法,通过这个句柄引用包装对象。

 

我认为对你来说,最简单的方法是通过一个文件来实现--卸载火鸡,加载C++模块并删除它,如此循环。

 
在MQL4中没有多维 数组。把它作为一个一维的来传输,主要是计算尺寸并正确传输。
 

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

也就是说,如果数组[10][6],那么它的大小就是一维的60?

 
Barbarian:
是的。
 
TheXpert:
是的。
即在C++中,你需要创建一个将一维数组转换为二维数组的类?
 
Barbarian:
那么,在C++中,你需要创建一个类,将一个一维数组转换回二维数组?

是的,当然。

我最近完成了这样一个班级的写作。它确实是一个多维动态数组。也就是说,在不破坏数据结构的情况下,有可能临时改变测量的数量。

而且还可以通过一个指向数组的指针进行初始化。我让操作员超负荷工作。我得到了348个过载:-))

运营商的情况也大致如此。

a4Arr[1][2][3] += a3Arr[1][0]; // В указанное 4-е измерение массива a4Arr добавляется содержимое 3-го измерения массива a3Arr.
我已经为它做了数学运算和各种操作。有一个反向的索引和许多其他的东西需要我去处理。

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

阵列的多维性 只是一个接口。它可以隐藏一个数组,一个指向数组的数组,一个容器类的数组,一个容器类,等等。

在我们的案例中,只有将一维数组解释为多维数组才是合适的。否则,没有办法从MQL4中传递。

 
Barbarian:
也就是说,在C++中,你需要创建一个将一维数组转换为二维数组的类吗?
不一定。你可以计算一下这个指数。每次转换一个数组都是一个很大的工作。