错误、漏洞、问题 - 页 2891 1...288428852886288728882889289028912892289328942895289628972898...3184 新评论 Roman 2020.10.27 17:07 #28901 A100:这可能是在编译器客观上没有信息的时候。也就是说,f()可能已经初始化了i,也可能没有。而在这种情况下,C++编译器会发出警告,但MQL编译器却没有。在C++中,内存单元的地址是不隐藏的,这就是为什么变量被初始化为垃圾的原因。 在Mql中,内存单元的地址是隐藏的,无法访问。这就是Mql开发者把编译器搞得一团糟的原因 )) 总之,总是初始化变量,你就不会感到头疼了。 Valeriy Yastremskiy 2020.10.27 17:07 #28902 Roman:是的,但是在第一次迭代之前,j变量还没有被初始化,这也是编译器所发誓的。 如果你不使用这个变量,或者把赋值i=j放在循环体的下面,这与第一个选项的执行相同,就不会有警告。编译器并不检查循环的逻辑和执行顺序,它从上到下检查语法,我想是这样,我不确定) fxsaber 2020.10.28 09:18 #28903 网站搜索服务中存在一个错误。这一搜索 并没有产生这一结果。 TheXpert 2020.10.28 09:28 #28904 fxsaber: 而在其他情况下。 点击回复而不是摇动终端 - 一个伟大的创新 A100 2020.10.28 10:53 #28905 编译错误。 #define MACRO(X)\ //Error: '\' - unexpected in macro definition X [删除] 2020.10.28 13:14 #28906 TheXpert:如果你按下回复键,你就会下载终端--这是一项伟大的创新。 这都是同样的事情...与我几乎被钉在这里的问题(在相同的下拉菜单钱包和未读主题 - 只是双胞胎兄弟),和你的,但(我不知道如何任何人)我挂这样的..."事情。" 那要怎么处理这个铭文呢?没有任何链接可以查看谁被问及原因,没有(也许它在钱包里,但我没有看)。 非常顽固的印象是,所有这些对网站的 "奇妙 "变化都是由一个人做出的,....。并亲自为自己。正是他认为他自己需要的方式。而且他根本不在乎我们的意见......。 TheXpert 2020.10.28 13:30 #28907 Сергей Таболин:那要怎么处理这个铭文呢? 我不知道,当有正常的应用时,它就消失了。 Vladimir Pastushak 2020.10.28 13:31 #28908 当REASON_ACCOUNT 发生变化时,预计会收到以前的账户并终止工作,从逻辑上讲,但是没有,如果账户发生了变化,我们在REASON_ACCOUNT的deinit中收到一个新的数字。 从逻辑上讲,程序应该完成对当前数据的处理,在进行新的调用时发送新的数据,而不是在这个过程中改变数据...... Vladimir Pastushak 2020.10.28 14:25 #28909 Vladimir Pastushak:当REASON_ACCOUNT 发生变化时,预计会收到以前的账户并终止工作,从逻辑上讲,但是没有,如果账户发生了变化,我们在REASON_ACCOUNT的deinit中收到一个新的数字。程序在逻辑上应该用当前数据完成工作,并在进行新的调用时传递新的数据,在此过程中不改变数据... 下面是演示不正确行为的代码 //+------------------------------------------------------------------+ //| Test.mq5 | //| Copyright 2020, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { Print("Start ", (string)AccountInfoInteger(ACCOUNT_LOGIN)); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { if(reason == REASON_ACCOUNT) Print("Stop ", (string)AccountInfoInteger(ACCOUNT_LOGIN)); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ 结果 2020.10.28 17:23:05.725 Test (EURUSD,M1) Stop 600.... 2020.10.28 17:23:06.306 Test (EURUSD,M1) Start 600.... 2020.10.28 17:23:17.478 Test (EURUSD,M1) Stop 535.... 2020.10.28 17:23:18.156 Test (EURUSD,M1) Start 535.... fxsaber 2020.10.28 14:35 #28910 Vladimir Pastushak:当REASON_ACCOUNT 发生变化时,预计会收到以前的账户并终止工作,从逻辑上讲,但是没有,如果账户发生了变化,我们在REASON_ACCOUNT的deinit中收到一个新的数字。程序应该在逻辑上完成对当前数据的处理,并在进行新的调用时发送新的数据,而不是在这个过程中改变数据... 这不是一个错误,因此行为不会改变。请考虑这个特殊性。 1...288428852886288728882889289028912892289328942895289628972898...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这可能是在编译器客观上没有信息的时候。
也就是说,f()可能已经初始化了i,也可能没有。而在这种情况下,C++编译器会发出警告,但MQL编译器却没有。
在C++中,内存单元的地址是不隐藏的,这就是为什么变量被初始化为垃圾的原因。
总之,总是初始化变量,你就不会感到头疼了。在Mql中,内存单元的地址是隐藏的,无法访问。这就是Mql开发者把编译器搞得一团糟的原因 ))
是的,但是在第一次迭代之前,j变量还没有被初始化,这也是编译器所发誓的。
如果你不使用这个变量,或者把赋值i=j放在循环体的下面,这与第一个选项的执行相同,就不会有警告。编译器并不检查循环的逻辑和执行顺序,它从上到下检查语法,我想是这样,我不确定)
fxsaber:
而在其他情况下。
点击回复而不是摇动终端 - 一个伟大的创新
如果你按下回复键,你就会下载终端--这是一项伟大的创新。
这都是同样的事情...与我几乎被钉在这里的问题(在相同的下拉菜单钱包和未读主题 - 只是双胞胎兄弟),和你的,但(我不知道如何任何人)我挂这样的..."事情。"
![](https://c.mql5.com/3/334/rchkywgj4j.png)
那要怎么处理这个铭文呢?没有任何链接可以查看谁被问及原因,没有(也许它在钱包里,但我没有看)。
非常顽固的印象是,所有这些对网站的 "奇妙 "变化都是由一个人做出的,....。并亲自为自己。正是他认为他自己需要的方式。而且他根本不在乎我们的意见......。
那要怎么处理这个铭文呢?
当REASON_ACCOUNT 发生变化时,预计会收到以前的账户并终止工作,从逻辑上讲,但是没有,如果账户发生了变化,我们在REASON_ACCOUNT的deinit中收到一个新的数字。
从逻辑上讲,程序应该完成对当前数据的处理,在进行新的调用时发送新的数据,而不是在这个过程中改变数据......
当REASON_ACCOUNT 发生变化时,预计会收到以前的账户并终止工作,从逻辑上讲,但是没有,如果账户发生了变化,我们在REASON_ACCOUNT的deinit中收到一个新的数字。
程序在逻辑上应该用当前数据完成工作,并在进行新的调用时传递新的数据,在此过程中不改变数据...
下面是演示不正确行为的代码
结果
当REASON_ACCOUNT 发生变化时,预计会收到以前的账户并终止工作,从逻辑上讲,但是没有,如果账户发生了变化,我们在REASON_ACCOUNT的deinit中收到一个新的数字。
程序应该在逻辑上完成对当前数据的处理,并在进行新的调用时发送新的数据,而不是在这个过程中改变数据...
这不是一个错误,因此行为不会改变。请考虑这个特殊性。