对变量的行为感到困惑 - 页 2

 
wlad:

错误 - 没有初始化

以下是帮助中的一个证明

全局变量 在程序加载到客户终端内存后被初始化一次

这根本就不是初始化,而是一个变量的变化

请仔细阅读代码

同时在日志中打印init()中取消初始化的原因。然后你就会明白为什么会发生初始化。
 
valenok2003:

你总是有StringVal 条件!=备份和 firsttime将永远是真实的,因为它(init)每次启动EA时只启动一次,当你改变tf窗口时,当你启动终端时改变设置时,会发生新的启动

这不是你的意思。

因为你没有仔细阅读这些帖子。

问题发生在外部字符串Value

当第一个变量发生变化时,第二个变量也会发生变化

无时无刻不在

只需改变一次

 
artmedia70:
并在日志中写明init()中去初始化的原因。然后你就会明白为什么会发生初始化。

你在说什么?

忘记初始化

以最后一个没有init()的例子为例,测试一下

如果你不明白我的意思,为什么要胡说八道呢?

 
wlad:

你在说什么?

忘记初始化

在最后一个例子中不使用init(),并测试它

如果你不明白我们在说什么,你为什么要胡说八道?



要么进一步折断你的脖子,要么读一读为什么变量在输入参数改变时被初始化。

"...全局变量 在程序加载到客户终端的内存中后 被初始化 一次......。"

你用红色强调的内容和字体的粗细--它不能给你一个保证,在改变外部变量的值后,它不会像第一次启动时那样再次初始化。你甚至可以改变信息中的字体大小。但是初始化仍然会发生,即使你从程序中删除init()。

 
wlad:

这不是你的意思

因为你没有仔细阅读帖子。

当外部字符串Value被改变时,问题发生了

当第一个变量发生变化时,第二个变量也会发生变化

无时无刻不在

并且只应更改一次




每当你启动EA时,就会有一次,而且每当你改变这个变量并按OK键时,它就会启动。

你说的"将程序加载到客户终端内存中 是什么意思?"?"你是什么时候编译的代码?

 
artmedia70:

要么进一步打破你的矛头,要么读一读为什么变量在输入参数改变时被初始化。

"...全局变量被初始化一次,在程序被加载到客户终端内存后立即进行。"

你用红色强调的内容和字体的粗细--它不能给你一个保证,在改变外部变量的值之后,它不会像第一次启动时那样再次初始化。

如果你不仔细阅读你的帖子,为什么要回复?

2.该变量没有被初始化,它的值为1。

如果你懒得测试,就不要浪费你的时间。

如果你想帮忙,我将不胜感激!

仔细阅读你的帖子,并测试它。


你从哪里得到这个?

它不能保证在你改变一个外部变量的值后,它不会像第一次运行时那样重新初始化。

我还没有看到对全局变量进行重新初始化 的情况

 
wlad:

如果你不仔细阅读帖子,为什么要回答?

2.该变量没有被初始化,但取值为1。

如果你懒得测试,就不要浪费你的时间。

如果你想帮忙,我将不胜感激!

仔细阅读你的帖子,并测试它。


你从哪里得到这个?

它不能保证在你改变一个外部变量的值后,不会像第一次运行时那样重新初始化。

我还没有看到对全局变量进行重新初始化的情况


当一个外部变量被改变时,EA被重新启动。我建议你在日志中显示去初始化的原因。你选择不这样做。
 
valenok2003:

你说的"将程序装入客户终端内存"是什么意思?"?"这是在你编译代码的时候吗?

在这种情况下也

你的意思是当程序第一次被连接到图表上时

但我还是要说。

这与初始化无关

阅读上文。

 
artmedia70:
当你改变一个外部变量时,EA会被重新启动。我建议你在日志中显示去初始化的原因。你选择不这样做。

为什么?

它能为我做什么?

我知道为什么会发生去初始化

我改变了外部变量

 
wlad:

在这种情况下,也是如此。

这是该程序第一次被附加到图表上

但我还是要说。

这不是关于启动的问题。

阅读上文



Vlad,这里有一个错误,每当你改变外部参数时都会发生初始化。而这正是重点,如果是关于inite的。