Init()和DeInit()执行顺序 - 页 3 12345678910...28 新评论 nmaratr 2017.04.10 21:15 #21 Aleksei Radchenko: 尝试将终端更新到1065版本。以前的版本仅仅通过改变时间框架就会出现重新初始化的错误。可能会有帮助 :)https://www.mql5.com/ru/forum/187690 我有终端5.00 b1571 Andrey Dik 2017.04.10 21:28 #22 你可以把变量值保存在某个地方,比如在globals中。在重新翻译之后,你可以读取并恢复这些变量。 Sergey Chalyshev 2017.04.10 21:38 #23 Andrey Dik: 你可以把变量值保存在某个地方,比如说保存在globals中。 在你翻译完它们之后,你可以读取并恢复这些变量。 然后Deinit将完成它的工作,破坏一切。如果要做你自己的自定义Init和Deinit,常规的Init和Deinit是没有意义的。我也遇到过这个问题。( nmaratr 2017.04.10 21:41 #24 Sergey Chalyshev: 然后Deinit会完成它的工作,毁掉一切。如果你做自己的自定义Init和Deinit,常规的Init和Deinit就没有意义了。我也遇到过这个问题。( 我完全同意(常规的Init和Deinit没有意义)。 nmaratr 2017.04.10 21:45 #25 Vasiliy Pushkaryov:也许可以尝试给图形对象分配一个TF期作为其名称前缀的一部分。然后应用这样的东西。谢谢你的答复是的,不得不做这样的事情,但这是一个部分解决方案。你可以通过资源或文件对变量进行同样的处理,但这是一个单独的额外资源,这可以通过修复MT5来避免的用不必要的辅助函数、检查等使代码杂乱无章。(WITHOUT....) Forester 2017.04.10 21:58 #26 我一直认为(结果是徒劳的),当我改变TF时,我首先在旧TF上删除,然后在新的TF上启动。这是一个合乎逻辑的过程。 我在开发专家顾问和指标时依靠的就是这种逻辑。而现在,它变成了一个真正的无稽之谈,事件的顺序被打断了......。 有时我注意到图表和图形对象有些不对劲,我不得不多次切换TF,以查看所有东西是否显示正确。 现在是代码,其中deinites中的一些东西发生了变化,然后inites也变回来了......结果发现顺序是相反的!!!。这实在是可怕的逻辑。这是谁想出来的?我想到的第一件事是,在我的deinit中,以前的状态(按下/释放的按钮)被存储在全局变量中,然后根据inits中保存的值来设置按钮。而就是这些按钮并不总是能正确复位。这是我记得的第一件事,也许我还能找到别的东西......明天将四处挖掘。 感谢开发者,他们付出了大量的工作... fxsaber 2017.04.10 22:11 #27 在Deinit中,将所有数据写入globals中。通过GlobalVariableSetOnCondition 将其中一个globals设置为信号。在Init中,如果semaphore的状态是 "dumped data",那么通过将semaphore设置为 "read all "来读取和工作。如果信号灯是 "不可理解的",那么我们就等待信号灯(通过一个循环的Sleep或OnTimer)。如果完全没有信号,这意味着我们第一次启动并计算一切,同时为TF的非未来变化创建一个信号。这样的实施有什么好复杂的?要用图书馆开一次药,就这样了。 Forester 2017.04.10 22:17 #28 fxsaber:在Deinit中,将所有数据写入globals中。通过GlobalVariableSetOnCondition 将其中一个globals设置为信号。在Init中,如果信号灯处于 "dumped "状态,我们将通过将信号灯设置为 "read all "状态来读取和工作。如果信号灯是 "不可读 "的,那么我们就等待信号灯的返回(通过循环Sleep或OnTimer)。这样的实施有什么好复杂的?要在图书馆里写一次,就这样了。 我不知道有这样一个问题存在。我希望的是deinit-init序列,而不是反过来。当你知道这些问题时,你就可能解决它们。但在我看来,这应该在终端逻辑层面上解决,而不是用拐杖,现在人们不得不把它放在每个程序中...... fxsaber 2017.04.10 22:20 #29 elibrarius: 我根本不知道有这样一个问题。我希望能有一个脱胎换骨的序列,而不是反过来。当你知道这些问题时,你就可以解决它们。但在我看来,这应该在终端逻辑层面上解决,而不是用拐杖,现在应该在每个程序中插入拐杖...... 这不是一个拐杖,这是一个简单的解决方案。问题是谁来实现它--开发者或用户。在这两种情况下,你应该花时间,写一次。如果用户能做到这一点,我们就写了它,不必再讨论这个问题了。我自己刚刚看了这个主题,马上就想到了一个解决方案。有什么值得深究的呢?你可以要求很长时间的东西,或者你可以自己快速写。 Stanislav Korotky 2017.04.10 22:32 #30 fxsaber: 这不是一个拐杖,而是一个简单的解决方案。唯一的问题是谁来实现它--开发者还是用户。在这两种情况下,你必须花时间,写一次。如果用户能做到这一点,我们就写了它,不必再讨论这个问题了。我自己刚刚看了这个主题,马上就想到了一个解决方案。有什么值得深究的呢?你可以要求很长时间的东西,或者你可以自己快速写。 如果你把小人物的数量相乘,他们--每个人自己,一次又一次--将解决一个共同的问题,那么浪费的工时将多次(在极限情况下,是无限次;-))超过在终端本身进行任何变体编辑所需的时间。即使有一个假想的图书馆存在,也不能保证每个人都知道它的存在并需要使用它。一般来说,不清楚为什么要制作和留下这样的 "耙子"? 12345678910...28 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
尝试将终端更新到1065版本。以前的版本仅仅通过改变时间框架就会出现重新初始化的错误。可能会有帮助 :)
https://www.mql5.com/ru/forum/187690
我有终端5.00 b1571
你可以把变量值保存在某个地方,比如说保存在globals中。 在你翻译完它们之后,你可以读取并恢复这些变量。
然后Deinit将完成它的工作,破坏一切。如果要做你自己的自定义Init和Deinit,常规的Init和Deinit是没有意义的。
我也遇到过这个问题。(
然后Deinit会完成它的工作,毁掉一切。如果你做自己的自定义Init和Deinit,常规的Init和Deinit就没有意义了。
我也遇到过这个问题。(
我完全同意(常规的Init和Deinit没有意义)。
也许可以尝试给图形对象分配一个TF期作为其名称前缀的一部分。
然后应用这样的东西。
是的,不得不做这样的事情,但这是一个部分解决方案。
你可以通过资源或文件对变量进行同样的处理,但这是一个单独的额外资源,这可以通过修复MT5来避免的
用不必要的辅助函数、检查等使代码杂乱无章。(WITHOUT....)
我一直认为(结果是徒劳的),当我改变TF时,我首先在旧TF上删除,然后在新的TF上启动。这是一个合乎逻辑的过程。 我在开发专家顾问和指标时依靠的就是这种逻辑。而现在,它变成了一个真正的无稽之谈,事件的顺序被打断了......。
有时我注意到图表和图形对象有些不对劲,我不得不多次切换TF,以查看所有东西是否显示正确。
现在是代码,其中deinites中的一些东西发生了变化,然后inites也变回来了......结果发现顺序是相反的!!!。这实在是可怕的逻辑。这是谁想出来的?
我想到的第一件事是,在我的deinit中,以前的状态(按下/释放的按钮)被存储在全局变量中,然后根据inits中保存的值来设置按钮。而就是这些按钮并不总是能正确复位。这是我记得的第一件事,也许我还能找到别的东西......明天将四处挖掘。
感谢开发者,他们付出了大量的工作...
在Deinit中,将所有数据写入globals中。通过GlobalVariableSetOnCondition 将其中一个globals设置为信号。
在Init中,如果semaphore的状态是 "dumped data",那么通过将semaphore设置为 "read all "来读取和工作。
如果信号灯是 "不可理解的",那么我们就等待信号灯(通过一个循环的Sleep或OnTimer)。
如果完全没有信号,这意味着我们第一次启动并计算一切,同时为TF的非未来变化创建一个信号。
这样的实施有什么好复杂的?要用图书馆开一次药,就这样了。
在Deinit中,将所有数据写入globals中。通过GlobalVariableSetOnCondition 将其中一个globals设置为信号。
在Init中,如果信号灯处于 "dumped "状态,我们将通过将信号灯设置为 "read all "状态来读取和工作。
如果信号灯是 "不可读 "的,那么我们就等待信号灯的返回(通过循环Sleep或OnTimer)。
这样的实施有什么好复杂的?要在图书馆里写一次,就这样了。
我根本不知道有这样一个问题。我希望能有一个脱胎换骨的序列,而不是反过来。当你知道这些问题时,你就可以解决它们。但在我看来,这应该在终端逻辑层面上解决,而不是用拐杖,现在应该在每个程序中插入拐杖......
这不是一个拐杖,而是一个简单的解决方案。唯一的问题是谁来实现它--开发者还是用户。在这两种情况下,你必须花时间,写一次。如果用户能做到这一点,我们就写了它,不必再讨论这个问题了。我自己刚刚看了这个主题,马上就想到了一个解决方案。有什么值得深究的呢?你可以要求很长时间的东西,或者你可以自己快速写。