阵列引用 - 页 6 1234567 新评论 Renat Fatkhullin 2012.11.23 09:04 #51 供参考。MQL5中的所有数组都只通过引用来传递(堆栈中的4或8字节),所以不要害怕在函数中传递数组--没有特殊的费用。存储真正的内存引用是非常危险的,特别是对终端本身控制的数组的引用(指示器缓冲区、OHLC缓冲区),因为它们真的被改变/重新分配了。此外,在对EA的调用(退出和进入脚本代码)之间,不可能保存无记载的引用。当把一个数组传递给DLL时,要指定数据块的起始地址,而尺寸则要单独指定。 TheXpert 2012.11.23 09:13 #52 mql5:首先要明白的是,为什么?那它有什么用呢?你不想做链接,我们会自己做。感谢参与者,感谢这个主题中的帖子,我发现,帮助中的描述 已经过时了......是的,这很搞笑)。但实际上,我甚至没有想到它可以在帮助中发表。也许你已经可以告诉我所有的旗帜了,那么?雷纳特。供参考。MQL5中的所有数组都只通过引用来传递(堆栈中的4或8字节),所以不要害怕在函数中传递数组--没有特殊的费用。我并不害怕,我很清楚,这是很便宜的。这只是不方便。存储真正的内存引用是非常危险的,特别是对终端本身管理的数组的引用(指示器缓冲区、OHLC缓冲区),因为它们真的被改变/重新分配了。更有甚者,EA的调用(退出和进入脚本代码)之间的无记录引用不得保存。请详细说明这一点--在OnCalculate过程中能否有内存的重新分配?这是胡说八道。当然,关于电话之间的问题,是很清楚的。我不希望有一个绑定指标或终端的功能,所以我将使用最安全的变体。 --- 2012.11.23 09:32 #53 TheXpert:关于这一点,请多多指教--在OnCalculate过程中能否有内存的重新分配?这实在是太疯狂了。 不是 "期间"--之间。 Renat Fatkhullin 2012.11.23 09:59 #54 TheXpert:关于这一点,请多多指教--在OnCalculate过程中能否有内存的重新分配?这真让人无奈。当然,关于电话之间的问题,是可以理解的。当然,我们谈论的是可能在电话之间进行重新分配。 问题是,有人会在调用之间错误地或明确地保存引用,在99%的情况下,一切都会工作,直到崩溃。之后会有相当预期的想法 "这是Metakvotes的错"。例如,我们曾有一位同志广播过这样的想法,并持续了几年,无法接受电话之间的历史可以被调换/改变的事实。 Vladimir Gomonov 2012.11.23 16:29 #55 Renat:当然,我们说的是可能在电话之间进行重新分配。 问题是,一定会有人错误地或明确地保存调用之间的链接,在99%的情况下,一切都会工作,直到崩溃。之后会有预期的 "这是Metakwots的错 "的想法。"害怕愧疚,就是不往前走"(c)。还有一件事:对已经完成的事情感到遗憾,比没有完成的事情要好。Renat,让我们说,我同意引用变量是一个潜在的问题来源,但这几乎可以说是任何工具的问题。有时人们会用螺丝刀戳别人。现在禁止螺丝刀是没有意义的,而简单地从生产中取消螺丝刀更是毫无意义,因为它们可以在家里制造,没有太多的问题。"引用 "作为一个mql实体是非常可取的,甚至不是以变量的形式,而是作为一种从函数中返回引用(lvalue)的可能性。 这将允许至少为容器制作真正快速的左侧索引器,并提供各种其他附加功能,比如。MyTree.Search(Key).GetElement() = NewVal;而且我明白,人们会想从一个函数中返回对一个局部变量 的引用!那又怎样?"忘掉参考资料,因为它们会使傻瓜的生活更加困难?")。--mql5的这种局限性(如缺乏链接)有时会强烈地促使 "逃到DLL",把MT5仅仅变成一个提供与经纪人沟通的 "市场驱动器"。 但最初的想法正好相反--消除使用外部编程工具的需要,因为"一切都在这里"。 Renat Fatkhullin 2012.11.23 16:45 #56 由于我们的目标是实现最大的语言安全,所以没有回头路可走。与原始链接一起工作是走向崩溃的坚实而肯定的一步。而将整个虚拟化系统取出来的程序崩溃是不允许的。我们的决定是完全知情的。MQL5用于编写程序,这些程序 将在大量的计算机上运行,而且无需人类参与。 TheXpert 2012.11.27 12:21 #57 无论如何,我希望这个原则对任何需要的人来说是清楚的。我将暂时保留它,只是把它留给自己。但她会的,而且会开放。我不需要解释,对基本类型的引用,如int,要容易得多,没有太多的问题。导致复杂性和实施问题的唯一问题是基础变量的范围。真的有广泛的可能性。________嗯,为了激励自己,值得注意的是,链接打开了一整层额外的可能性,比如说包装器。 Ilyas 2012.11.27 13:04 #58 l值链接的计划... TheXpert 2012.11.27 14:36 #59 mql5: l值链接的计划... 伙计,你应该马上告诉我)我就不会挣扎了。但这很好。 Georgiy Merts 2020.03.26 12:36 #60 向大家问好。 我想知道八年来是否有什么变化? 或者,只用msvcrt.dll和memcpy函数还是可以从OnCalculate()中获得数组地址吗? 还是每个人都在整个类结构 中 "拖动 "对数组的引用(或者说,每次都组织自己的数组并复制内容)? 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
供参考。
首先要明白的是,为什么?那它有什么用呢?
你不想做链接,我们会自己做。
是的,这很搞笑)。但实际上,我甚至没有想到它可以在帮助中发表。
也许你已经可以告诉我所有的旗帜了,那么?
供参考。
我并不害怕,我很清楚,这是很便宜的。这只是不方便。
请详细说明这一点--在OnCalculate过程中能否有内存的重新分配?这是胡说八道。
当然,关于电话之间的问题,是很清楚的。
我不希望有一个绑定指标或终端的功能,所以我将使用最安全的变体。
关于这一点,请多多指教--在OnCalculate过程中能否有内存的重新分配?这实在是太疯狂了。
关于这一点,请多多指教--在OnCalculate过程中能否有内存的重新分配?这真让人无奈。
当然,关于电话之间的问题,是可以理解的。
当然,我们谈论的是可能在电话之间进行重新分配。
问题是,有人会在调用之间错误地或明确地保存引用,在99%的情况下,一切都会工作,直到崩溃。之后会有相当预期的想法 "这是Metakvotes的错"。
例如,我们曾有一位同志广播过这样的想法,并持续了几年,无法接受电话之间的历史可以被调换/改变的事实。
当然,我们说的是可能在电话之间进行重新分配。
问题是,一定会有人错误地或明确地保存调用之间的链接,在99%的情况下,一切都会工作,直到崩溃。之后会有预期的 "这是Metakwots的错 "的想法。
"害怕愧疚,就是不往前走"(c)。
还有一件事:对已经完成的事情感到遗憾,比没有完成的事情要好。
Renat,让我们说,我同意引用变量是一个潜在的问题来源,但这几乎可以说是任何工具的问题。有时人们会用螺丝刀戳别人。现在禁止螺丝刀是没有意义的,而简单地从生产中取消螺丝刀更是毫无意义,因为它们可以在家里制造,没有太多的问题。
"引用 "作为一个mql实体是非常可取的,甚至不是以变量的形式,而是作为一种从函数中返回引用(lvalue)的可能性。 这将允许至少为容器制作真正快速的左侧索引器,并提供各种其他附加功能,比如。
而且我明白,人们会想从一个函数中返回对一个局部变量 的引用!
那又怎样?"忘掉参考资料,因为它们会使傻瓜的生活更加困难?")。
--
mql5的这种局限性(如缺乏链接)有时会强烈地促使 "逃到DLL",把MT5仅仅变成一个提供与经纪人沟通的 "市场驱动器"。 但最初的想法正好相反--消除使用外部编程工具的需要,因为"一切都在这里"。
由于我们的目标是实现最大的语言安全,所以没有回头路可走。
与原始链接一起工作是走向崩溃的坚实而肯定的一步。而将整个虚拟化系统取出来的程序崩溃是不允许的。
我们的决定是完全知情的。MQL5用于编写程序,这些程序 将在大量的计算机上运行,而且无需人类参与。
无论如何,我希望这个原则对任何需要的人来说是清楚的。我将暂时保留它,只是把它留给自己。但她会的,而且会开放。
我不需要解释,对基本类型的引用,如int,要容易得多,没有太多的问题。
导致复杂性和实施问题的唯一问题是基础变量的范围。真的有广泛的可能性。
________
嗯,为了激励自己,值得注意的是,链接打开了一整层额外的可能性,比如说包装器。
l值链接的计划...
向大家问好。
我想知道八年来是否有什么变化?
或者,只用msvcrt.dll和memcpy函数还是可以从OnCalculate()中获得数组地址吗?
还是每个人都在整个类结构 中 "拖动 "对数组的引用(或者说,每次都组织自己的数组并复制内容)?