错误、漏洞、问题 - 页 1681 1...167416751676167716781679168016811682168316841685168616871688...3184 新评论 fxsaber 2016.09.13 06:25 #16801 Karputov Vladimir: 报价是去还是站,没有任何区别。你需要在指标中控制prev_calculate==0的条件--这是历史交换和第二点--对变化的条形图重新计算的节约模式,这实际上是rate_total -prev_calculate+1。你应该在回复之前阅读所写的内容。重现调试器错误的代码!所有用于复制的数据都已给出。下面是一个重现相同错误的脚本int Func(){ return(0); } int Func2() { // return(0); // если расскоментировать и здесь поставить точку останова, то отладчик отработает, как надо return(Func()); // здесь поставить точку останова (F9) } void OnStart() { Func2(); } Vladimir Karputov 2016.09.13 06:28 #16802 fxsaber: 你应该在回答之前阅读所写的内容。重现调试器错误的代码!所有用于复制的数据都已给出。我回答了你--你并不关心OnCalculate被调用 多少次。你的任务是通过分析两个值:Rates_total、prev_calculate和prev_calculate==0时的条件,来提供指标的全部或部分重新计算。没有严格的条件规定OnCalculate()必须被调用一次或两次。OnCalculate()并不欠任何人什么。但程序员必须控制两个值:Rates_total、prev_calculate和prev_calculate==0时的条件。 fxsaber 2016.09.13 06:31 #16803 Karputov Vladimir: 我告诉过你--你并不关心OnCalculate被调用 多少次。你的任务是提供指标的全部或部分重新计算,分析两个值:rate_total,prev_calculate和prev_calculate==0时的条件。我关心调试器被调用多少次,OnCalculate被调用多少次。我本质上是一个了不起的人!而我对一切都很关心。你试图教我一些东西,却不了解问题的本质。当然,谢谢你。但让我们听一听,听一听我们的对手。 Sergei Vladimirov 2016.09.13 06:35 #16804 fxsaber:不,我现在是在RTS上运行,当kotirs站着的时候。发现它被调用了一次,而调试器却在说谎,显示好像是两次。播放代码(在一个没有滴答声的角色上运行)。在按下F5后,它将会碰到一个断点。而在第二次按下F5后--类似的情况。虽然这不应该是--作为一种确认,但你可以缩短代码中的那一行,用它来试试。这样你就能看到什么是错的。观察第一和第二站的i的值。int Func(int& i) { i++; return 0; } int OnCalculate( const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[] ) { int i = 1; return(Func(i)); // здесь поставить точку останова (F9) } fxsaber 2016.09.13 06:39 #16805 Sergei Vladimirov:这就是你可以看到问题所在的方法。追踪第一和第二站的i值。追踪它,这就是我写它的原因。发现它被调用了一次,但调试器在撒谎,显示它好像是两次。为什么在第二次按F5后,调试器会将我退回到同一个地方?在return(0)中没有这样的事情发生,这是对的。 Sergei Vladimirov 2016.09.13 06:42 #16806 它没有说谎,它停了两次--在计算括号内的表达式之前,以及在它之后,就在返回之前。顺便说一下,在我看来,这是一个非常方便的技巧。我需要记住它。不需要把结果放在括号里,在退出前检查返回值,调试器本身会再次停止。 fxsaber 2016.09.13 06:47 #16807 Sergei Vladimirov:它没有说谎,它停了两次--在计算括号内的表达式之前,以及在它之后,就在返回之前。顺便说一下,在我看来,这是一个非常方便的技巧。我需要记住它。不需要把结果放在括号里,在退出前检查返回值,调试器本身会第二次停止。 我同意,这很方便。但如何在调试器中没有变量的情况下找出退出前的返回结果? Vladimir Karputov 2016.09.13 06:48 #16808 fxsaber: 把代码写成这样。int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { int i=1; Print("Перед: i ",i,",rates_total ",rates_total,", prev_calculated ",prev_calculated); int rezult=Func(i); Print("После: i ",i,",rates_total ",rates_total,", prev_calculated ",prev_calculated); return(rezult); // здесь поставить точку останова (F9) }并将该指标放在图表上。然后重新加载终端(你不需要从图表中删除指标)。你会看到OnCalculate()可以被调用一次或两次甚至三次。也就是说,正如我上面所说--没有严格的规则。 fxsaber 2016.09.13 06:50 #16809 Karputov Vladimir:把代码写成这样。并将该指标放在图表上。然后重新加载终端(你不需要从图表中删除指标)。你会看到OnCalculate()可以被调用一次或两次甚至三次。也就是说,正如我上面所说--没有严格的规则。 你迫使我抱怨你完全不愿意听你的对手所写的东西。 Sergei Vladimirov 2016.09.13 06:53 #16810 fxsaber: 我同意,这很方便。但是,在调试器中没有变量的情况下,我怎样才能找出退出前的返回结果?在Func()体中查看它在退出前返回的内容。我说的是一个特殊情况。如果数值将直接在括号内计算,当然不能。PS。虽然...为什么不呢?在第二站,查找所有参数return()并计算结果。) 1...167416751676167716781679168016811682168316841685168616871688...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
报价是去还是站,没有任何区别。你需要在指标中控制prev_calculate==0的条件--这是历史交换和第二点--对变化的条形图重新计算的节约模式,这实际上是rate_total -prev_calculate+1。
你应该在回复之前阅读所写的内容。重现调试器错误的代码!所有用于复制的数据都已给出。
下面是一个重现相同错误的脚本
你应该在回答之前阅读所写的内容。重现调试器错误的代码!所有用于复制的数据都已给出。
我回答了你--你并不关心OnCalculate被调用 多少次。你的任务是通过分析两个值:Rates_total、prev_calculate和prev_calculate==0时的条件,来提供指标的全部或部分重新计算。
没有严格的条件规定OnCalculate()必须被调用一次或两次。OnCalculate()并不欠任何人什么。但程序员必须控制两个值:Rates_total、prev_calculate和prev_calculate==0时的条件。
我告诉过你--你并不关心OnCalculate被调用 多少次。你的任务是提供指标的全部或部分重新计算,分析两个值:rate_total,prev_calculate和prev_calculate==0时的条件。
我关心调试器被调用多少次,OnCalculate被调用多少次。我本质上是一个了不起的人!而我对一切都很关心。
你试图教我一些东西,却不了解问题的本质。当然,谢谢你。但让我们听一听,听一听我们的对手。
不,我现在是在RTS上运行,当kotirs站着的时候。发现它被调用了一次,而调试器却在说谎,显示好像是两次。播放代码(在一个没有滴答声的角色上运行)。
在按下F5后,它将会碰到一个断点。而在第二次按下F5后--类似的情况。虽然这不应该是--作为一种确认,但你可以缩短代码中的那一行,用它来试试。
这样你就能看到什么是错的。观察第一和第二站的i的值。
这就是你可以看到问题所在的方法。追踪第一和第二站的i值。
追踪它,这就是我写它的原因。
发现它被调用了一次,但调试器在撒谎,显示它好像是两次。
为什么在第二次按F5后,调试器会将我退回到同一个地方?在return(0)中没有这样的事情发生,这是对的。
它没有说谎,它停了两次--在计算括号内的表达式之前,以及在它之后,就在返回之前。
顺便说一下,在我看来,这是一个非常方便的技巧。我需要记住它。不需要把结果放在括号里,在退出前检查返回值,调试器本身会再次停止。
它没有说谎,它停了两次--在计算括号内的表达式之前,以及在它之后,就在返回之前。
顺便说一下,在我看来,这是一个非常方便的技巧。我需要记住它。不需要把结果放在括号里,在退出前检查返回值,调试器本身会第二次停止。
把代码写成这样。
并将该指标放在图表上。然后重新加载终端(你不需要从图表中删除指标)。你会看到OnCalculate()可以被调用一次或两次甚至三次。也就是说,正如我上面所说--没有严格的规则。
把代码写成这样。
并将该指标放在图表上。然后重新加载终端(你不需要从图表中删除指标)。你会看到OnCalculate()可以被调用一次或两次甚至三次。也就是说,正如我上面所说--没有严格的规则。
我同意,这很方便。但是,在调试器中没有变量的情况下,我怎样才能找出退出前的返回结果?
在Func()体中查看它在退出前返回的内容。我说的是一个特殊情况。如果数值将直接在括号内计算,当然不能。
PS。虽然...为什么不呢?在第二站,查找所有参数return()并计算结果。)