MetaTrader 4 Build 529测试版发布,带有新的编译器 - 页 17 1...101112131415161718192021222324...161 新评论 Vladimir Pastushak 2013.11.06 10:54 #161 Barbarian:以前有效果吗?我不知道你在哪里声明i变量。 在全局变量 中,我只初始化一次i,然后在所有的循环中使用它,这样更方便,更容易...... Ihor Herasko 2013.11.06 11:08 #162 ALXIMIKS:是不是应该这样,当 你改变一个 已经在运行的 指标的参数 时, 通过双击它。该指标不更新静态变量,因此,它不被重新绘制? 静态变量 在重新初始化程序时保留其价值。只有当程序从图表中删除并重新加入时,这些值才会被保存。为了在重新初始化时重置静态变量,我使用这种结构。 bool g_init; void OnInit() { g_init = true; } void MyFunction() { static int myStatic; if (g_init) { myStatic = 0; g_init = false; } } Test Account 2013.11.06 11:19 #163 VOLDEMAR: 这就是它的工作原理...... 它不是以这种方式工作的。 在第二种情况下,函数中声明的数组的范围是一个函数。 在代码中 for(i=Coment-1; i>=1; i--){info[i]=info[i-1]; cv [i]=cv [i-1];}info[0]=txt;cv[0]=et; 你确定你用txt和et的值初始化了所有数组项 吗?也许最后两个任务应该在循环之前,而且循环应该以不同的方式构建。或者说是这样的想法吗? Sergey Dzyublik 2013.11.06 11:23 #164 Scriptong: 静态变量在重新初始化程序时保留其价值。只有当程序从图表中移出并重新连接时,这些值才会被保留。为了在重新初始化时重置静态变量,我使用以下结构。 所以现在我必须在库中搜索并重写一切? 这很荒谬,因为在509中一切都很好,而在这里...... Vladimir Pastushak 2013.11.06 11:26 #165 alexvd: 在第二种情况下,在一个函数中声明的数组的范围是一个函数。 在代码中。 你确定你正在用txt和et初始化所有数组元素吗?可能最后2个任务应该在循环之前。还是说这是一个想法? 文本首先在循环中移位一级,然后将空值分配给新的文本......。 这些数组只在我上面介绍的函数中使用 ... 在509和更早的构建中,一切都在两种情况下工作......。现在只有在第一种情况下... Vladimir Pastushak 2013.11.06 11:28 #166 ALXIMIKS: 翻阅图书馆并重写所有内容有什么意义呢? 这很荒谬,因为在509年一切都很好,而现在是......。 最好是在代码的开头初始化所有要在代码中使用的变量......。 这简化了工作,并使其有可能在程序开始时看到并正确地重置变量,并进一步使用... Andrey Khatimlianskii 2013.11.06 11:40 #167 ALXIMIKS: 是不是应该这样,当 你改变一个 已经在运行的 指标的参数 时, 通过双击它。 指标不更新静态变量,这就是为什么它没有被重新绘制? 在我的记忆中,它一直是这样的(在509的建设中肯定是这样)。这是个错误。 VOLDEMAR: 我在不同的电脑上注意到一个奇怪的现象,一台是XP,另一台是W7 当在一个函数内初始化一个数组时,数组没有被填满整个值,只有0值... 当在全局层面初始化一个超越所有函数的数组时,数组被完全填充,因为它应该是...... 关于这一点已经说过无数次了--明确地初始化数组 和变量,不要等待 "天赐良机"。 在地方申报的情况下,你只是幸运,他们没有得到垃圾。但我不会指望它。 Renat Fatkhullin 2013.11.06 11:45 #168 请注意,新的编译器和新的执行环境对代码质量的控制要严格很多倍。 很多MQL4的代码都是由第三方开发者用手写的,现在这些缺陷会立即显现出来。 Sergey Dzyublik 2013.11.06 12:22 #169 如果我弄错了,请纠正我。 我在一个指标中使用了一个库函数,这个函数声明了一些静态 变量,参与了指标 数组的计算。 如果我想改变指标参数,以纠正指标计算(取决于静态变量)。 将该标志传递给负责重新初始化的库函数(你应该扩展每个有静态变量的函数的输入参数)。 在正文中对静态变量进行归零,不要忘记在完成计算之前删除标志。 如果静态变量有一些参数,在其声明时设置,负责这些变量在重新初始化时是否会被重置为零,那就容易多了。 Vadim Krisenko 2013.11.06 12:35 #170 Renat: 请注意,新的编译器和新的执行环境对代码质量的控制要严格得多。 很多MQL4的代码是由第三方开发者用手写的,现在这些缺陷将立即显现出来。 MQL4手册(在编辑器中)是否也进行了相应的更新? 1...101112131415161718192021222324...161 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
以前有效果吗?我不知道你在哪里声明i变量。
在全局变量 中,我只初始化一次i,然后在所有的循环中使用它,这样更方便,更容易......
是不是应该这样,当 你改变一个 已经在运行的 指标的参数 时, 通过双击它。
该指标不更新静态变量,因此,它不被重新绘制?
静态变量 在重新初始化程序时保留其价值。只有当程序从图表中删除并重新加入时,这些值才会被保存。为了在重新初始化时重置静态变量,我使用这种结构。
这就是它的工作原理......
它不是以这种方式工作的。
在第二种情况下,函数中声明的数组的范围是一个函数。
在代码中
你确定你用txt和et的值初始化了所有数组项 吗?也许最后两个任务应该在循环之前,而且循环应该以不同的方式构建。或者说是这样的想法吗?
静态变量在重新初始化程序时保留其价值。只有当程序从图表中移出并重新连接时,这些值才会被保留。为了在重新初始化时重置静态变量,我使用以下结构。
所以现在我必须在库中搜索并重写一切? 这很荒谬,因为在509中一切都很好,而在这里......
在第二种情况下,在一个函数中声明的数组的范围是一个函数。
在代码中。
你确定你正在用txt和et初始化所有数组元素吗?可能最后2个任务应该在循环之前。还是说这是一个想法?
文本首先在循环中移位一级,然后将空值分配给新的文本......。
这些数组只在我上面介绍的函数中使用 ...
在509和更早的构建中,一切都在两种情况下工作......。现在只有在第一种情况下...
翻阅图书馆并重写所有内容有什么意义呢? 这很荒谬,因为在509年一切都很好,而现在是......。
最好是在代码的开头初始化所有要在代码中使用的变量......。
这简化了工作,并使其有可能在程序开始时看到并正确地重置变量,并进一步使用...
是不是应该这样,当 你改变一个 已经在运行的 指标的参数 时, 通过双击它。
指标不更新静态变量,这就是为什么它没有被重新绘制?
在我的记忆中,它一直是这样的(在509的建设中肯定是这样)。这是个错误。
我在不同的电脑上注意到一个奇怪的现象,一台是XP,另一台是W7
当在一个函数内初始化一个数组时,数组没有被填满整个值,只有0值...
当在全局层面初始化一个超越所有函数的数组时,数组被完全填充,因为它应该是......
关于这一点已经说过无数次了--明确地初始化数组 和变量,不要等待 "天赐良机"。
在地方申报的情况下,你只是幸运,他们没有得到垃圾。但我不会指望它。
如果我弄错了,请纠正我。
我在一个指标中使用了一个库函数,这个函数声明了一些静态 变量,参与了指标 数组的计算。
如果我想改变指标参数,以纠正指标计算(取决于静态变量)。
将该标志传递给负责重新初始化的库函数(你应该扩展每个有静态变量的函数的输入参数)。
在正文中对静态变量进行归零,不要忘记在完成计算之前删除标志。
如果静态变量有一些参数,在其声明时设置,负责这些变量在重新初始化时是否会被重置为零,那就容易多了。
请注意,新的编译器和新的执行环境对代码质量的控制要严格得多。 很多MQL4的代码是由第三方开发者用手写的,现在这些缺陷将立即显现出来。