我从来没有认真地使用过MT5,现在我一下子要把一个巨大的项目转移到它上面。自然,也有一些困难,其中之一就是阵列总是超出范围。事实证明,MT4没有这样的问题,这也是因为数组在公布后不需要特意清空。但在MT5中,这是必要的。我的技术要求逐渐填充内核,同时改变其大小。一些数组的确切大小是事先不知道的。同时,由于在数组的填充过程中,数组上有大量的循环,一切都会失去秩序。 如果单元格中没有垃圾,一切早就可以工作了。
也就是说,一方面是数组中的垃圾,另一方面是超限的关键错误。这就像一个苛刻的条件...
我想了解为什么他们要像MT4那样,取消自动清除数组,并将声明的变量 减少到零?
如果我们可以容忍变量,我们将不得不面对大数组中不断收集垃圾的问题,我们不仅要在声明时清理它们,而且还要在调整大小时清理它们......为什么?
一开始也遇到了类似的困难。
在我看来,数组是以特定的方式填充的,这一点应该在循环中经常被考虑到。
彼得,我不知道你是什么意思?
都是一样的https://www.mql5.com/ru/forum/293630/page179#comment_10802823
现在是MQL5的错......;)
- 2019.02.28
- www.mql5.com
嗯,是的,我不习惯MQL4。
你当然会这样做。
任何尊重自己和自己的程序的程序员都不会让事情溜走。在MQL4中,如果你不使用#property strict,你可以通过索引20来引用一个大小为10的数组。而什么也不会发生--程序将继续工作,但要由程序员决定下一步使用什么。如果他很聪明,他肯定会检查和控制一切,以免得到数组 以外的值,但如果他 "粗略地 "做,他不会考虑这种控制,"主要是它的工作,但它如何工作--不知何故......"。
大多数用户,没有理会这一点,一直在抱怨 "糟糕、邪恶和复杂的MQL5",因为它不允许他们像以前一样伪造自己的创作。但是,那些最初认为并创建了具有检查和控制接收数据的代码的人,没有注意到语言的复杂性有什么不同,现在想知道--"复杂性在哪里--是一样的......"。
我从来没有认真地使用过MT5,现在我一下子要把一个巨大的项目转移到它上面。自然,也有一些困难,其中之一就是阵列总是超出范围。事实证明,MT4没有这样的问题,这也是因为数组在公布后不需要特意清空。但在MT5中,这是必要的。我的技术要求逐渐填充内核,同时改变其大小。一些数组的确切大小是事先不知道的。同时,由于在数组的填充过程中,数组上有大量的循环,一切都会失去秩序。 如果单元格中没有垃圾,一切早就可以工作了。
也就是说,一方面是数组中的垃圾,另一方面是超限的关键错误。这就像一个苛刻的条件...
我想了解为什么他们要像MT4那样,取消自动清除数组,并将声明的变量 减少到零?
如果我们可以容忍变量,我们将不得不面对大数组中不断收集垃圾的问题,我们不仅要在声明时清理它们,而且还要在调整大小时清理它们......为什么?