错误、漏洞、问题 - 页 3150 1...314331443145314631473148314931503151315231533154315531563157...3184 新评论 Nikolai Semko 2022.02.07 11:21 #31491 Nikolai Semko #:三元运算符看起来更简洁(IMHO)。int limit = prev_calculated==0 ? 0: prev_calculated-1; 更加简洁的方式。 int limit = prev_calculated-bool(prev_calculated); :)) Roman 2022.02.07 11:22 #31492 Nikolai Semko #:我已经写过,在这个结构中,你是用rate_total访问缓冲区的索引(当prev_calculated == 0时)。,这是一个溢出,因为rate_total是缓冲区的大小,其最后一个元素 是 rate_total-1。是的,我明白了为什么现在会发生溢出的情况!为什么这种构造以前有效,而现在却不起作用? int limit = rates_total-prev_calculated; for(int i=limit; i>=0; i--)因为缓冲区正好被分配到 rates_total,而不是rates_total+1 我在等着听Artyom怎么说,他了解这个问题。 Nikolai Semko 2022.02.07 11:24 #31493 Roman #:是的,我明白了为什么现在会发生溢出的情况!为什么这个设计以前能用,而现在 却不能用? 因为缓冲区正好被分配到 rates_total,而不是rates_total+1 没有所谓的奇迹。,如果它以前是有效的,那么它一定是不同的代码。 Valeriy Yastremskiy 2022.02.07 11:47 #31494 Roman #:有了这个设计。 指标缓冲区出界。请给我看一个周期i>=0的ticks 的例子 也许我忘记了我做错了什么。 大致上在最大的边上减少2或3个索引以确保)。 Roman 2022.02.07 11:57 #31495 Nikolai Semko #:没有奇迹。,如果它以前是有效的,那么它一定是不同的代码。 以前,正确的极限计算是 int limit = rates_total-1-prev_calculated; 而它将进入i>=0的循环。 for(int i=limit; i>=0; i--) 但现在不行了,因为极限变成了-1 TheXpert 2022.02.07 12:12 #31496 这个讨论是偏离主题的,它属于一些新手的主题 Nikolai Semko 2022.02.07 12:12 #31497 Roman #:过去正确的计算方法是它将进入i>=0的循环。现在它不会进去了,因为限制变成了-1。 我以前也不能用同样的代码登录。,不要编造东西。 如果你不相信我,可以从Hatimlansky 那里下载旧的构建并检查它。 Roman 2022.02.07 12:14 #31498 TheXpert #: 这个讨论在这里是偏离主题的,它属于一些新手的主题 如果你以前没有使用过这种设计,那么就不要用你的offtop。 Roman 2022.02.07 12:17 #31499 Nikolai Semko #:我以前也不能用同样的代码登录,这不是瞎编的。从Hatimlansky 那里下载旧的构建,如果你不相信我,可以检查一下。 阿特姆也使用了这种结构。 这是他在上面描述的,所以只有他明白这里的问题。 Artyom Trishkin 2022.02.07 12:21 #31500 Roman #:过去正确的计算方法是它将进入i>=0的循环。而现在它没有,因为极限变成了-1。 总是有一个检查:如果(limit>1)limit=rates_total-1。这是针对计算中没有i+something的情况。如果有,那么这些 "多少多少 "应该包括在结构中:limit=rates_total-1-some-something。 没有它,总是会有一个阵列超限。因为Rates_total除了Bars()之外没有别的东西。相应地,如果有5000个柱子,而我们的索引是5000,我们将落在阵列的限制之外(柱子的计算从零开始)。 在你的例子中,限额的计算是错误的。 int limit = rates_total-1-prev_calculated; 它应该是这样的。 int limit = rates_total-prev_calculated; 并在其之后检查限制是否>1 如果limit大于1,则limit = rates_total-1 1...314331443145314631473148314931503151315231533154315531563157...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
三元运算符看起来更简洁(IMHO)。
更加简洁的方式。
:))
我已经写过,在这个结构中,你是用rate_total访问缓冲区的索引(当prev_calculated == 0时)。
,这是一个溢出,因为rate_total是缓冲区的大小,其最后一个元素 是 rate_total-1。
是的,我明白了为什么现在会发生溢出的情况!
为什么这种构造以前有效,而现在却不起作用?
因为缓冲区正好被分配到 rates_total
我在等着听Artyom怎么说,他了解这个问题。,而不是rates_total+1
是的,我明白了为什么现在会发生溢出的情况!
为什么这个设计以前能用,而现在 却不能用?
因为缓冲区正好被分配到 rates_total
,而不是rates_total+1
没有所谓的奇迹。
,如果它以前是有效的,那么它一定是不同的代码。
有了这个设计。
指标缓冲区出界。
请给我看一个周期i>=0的ticks 的例子
也许我忘记了我做错了什么。
大致上在最大的边上减少2或3个索引以确保)。
没有奇迹。
,如果它以前是有效的,那么它一定是不同的代码。
以前,正确的极限计算是
而它将进入i>=0的循环。
但现在不行了,因为极限变成了-1
过去正确的计算方法是
它将进入i>=0的循环。
现在它不会进去了,因为限制变成了-1。
我以前也不能用同样的代码登录。
,不要编造东西。
如果你不相信我,可以从Hatimlansky 那里下载旧的构建并检查它。
这个讨论在这里是偏离主题的,它属于一些新手的主题
如果你以前没有使用过这种设计,那么就不要用你的offtop。
我以前也不能用同样的代码登录
,这不是瞎编的。
从Hatimlansky 那里下载旧的构建,如果你不相信我,可以检查一下。
阿特姆也使用了这种结构。
这是他在上面描述的,所以只有他明白这里的问题。
过去正确的计算方法是
它将进入i>=0的循环。
而现在它没有,因为极限变成了-1。
总是有一个检查:如果(limit>1)limit=rates_total-1。这是针对计算中没有i+something的情况。如果有,那么这些 "多少多少 "应该包括在结构中:limit=rates_total-1-some-something。
没有它,总是会有一个阵列超限。因为Rates_total除了Bars()之外没有别的东西。相应地,如果有5000个柱子,而我们的索引是5000,我们将落在阵列的限制之外(柱子的计算从零开始)。
在你的例子中,限额的计算是错误的。
它应该是这样的。
int limit = rates_total-prev_calculated;
并在其之后检查限制是否>1
如果limit大于1,则limit = rates_total-1