int start(){...int i;for( i=100; i>=1; i--)//отмечу, что здесь было именно 1, а не 0{//че-то делаем
CallToDLLFunction();//здесь вызывалась какая-то простенькая функция, время работы порядка 1-3 миллисекунд}if( i<0)return(0);//эти две строчки вставил уже когда заподозрил неладноеAlert("i=", i);return(0);}
如果解释器不出现故障,它就不会跳过代码中的命令,无论你做了多少狗屁事!
不要用这种超级术语,"小毛病"。如果一个解释器有几个小毛病,这并不意味着它有小毛病。至少看一下同一个VC的bug报告,我强烈建议了解什么是 "小毛病"。情况是一个数量级的恶化,但没有一个头脑正常的人敢认为VC是 "小毛病"。这里也是如此。
而无论如何,有问题的圆珠笔是在这里吗?有没有人反对dll的正确写法--它的行为正确吗?而卸载dll的唯一正确方式是文档中推荐的标准方式?
AlexEro,
在时间序列上循环for(i=limit;i>=0;i--)完成后 ,它飞到了负指数的区域(这不可避免地被警报证实)!!!!
)))你是说真的吗?
真是一团糟啊!我不知道!!!我不知道。
(今天真是......马虎的一天)
所谓的意思是,你必须在EA中指定一个特定的dll。
然后运行该EA,不要退出Metatrader。
接下来--最重要的用例--我们必须假装我们正在用一个新的dll来替换。
如果在metatrader运行时失败(我通过删除文件来检查),那么
那么系统就会认为该dll正在使用中------。
瞧,就是这样。专家顾问已经完成了它的工作,而dll还没有被卸载。
现在我不得不重新启动整个应用程序来替换dll。
天啊,如果我对你的描述理解正确,那么你是建议在EA运行时替换dll本身,而dll是与之挂钩的?你是否尝试过停止EA(不是用按钮),然后替换dll,再重新启动EA?
但是,一旦一个被吓坏的程序员开始过度热衷于操纵内存或从终端窃取处理器时间进行计算,或触及神圣的(哦,我的上帝)--终端.exe消息队列,那么邪恶的methaquot将进行报复。
而你认为程序消息队列处理程序应该在所有执行的代码片段中 "像梅林一样,伟大而可怕"?你为什么要从dll中碰别人的消息队列?
我遇到过这样的事情,让你的头发都竖起来了。
到目前为止,这只是说说而已。给我一个代码的例子。我不是唯一感兴趣的人。
一般来说,我没有遇到过dll不加载的情况(我已经写过了;我在Expert Advisors和指标中都使用了dll;在所有情况下,我不得不直接在dll中 "过度热心地操纵内存或使用cpu时间",结果是不理想的操作)。
)))这就是你的意思吗?
真是一团糟啊!我不知道!!!我不知道。
(今天是多么......混乱的一天)。
我无法准确地重现代码,但它是这样的
在一个快速的市场中,当每秒收到几个ticks时,这段代码在警报中产生了一个序列i=0,i=-1,i=-2,i=-3(取决于终端错过了多少个ticks直到start()被执行),然后又是i=0。
错过的虱子--见鬼去吧,它发生了。但如果它发生了,并不意味着程序必须跳过一个条件性命令,这实际上在代码中发生了两次(for循环本质上也是一个分支性命令)。
我靠,如果我对你的描述理解正确的话,你是建议在EA运行时替换dll本身,而dll是与之挂钩的?你是否尝试过停止EA(不是用按钮),然后替换dll,再重新启动EA?
当然,我们说的是在测试完成后尝试替换dll。
但显然,你的职业经验表明,在你所犯的错误之后
和对论坛用户的不正确态度,开始挑剔的话,更有利可图。
.
当然,这位伟大的专家也没有尝试做一个简单的测试......或者说做了。
当然,我们说的是在测试完成后尝试替换dll。但显然你的职业经验表明,在你所犯的错误和对论坛成员的不正确态度之后,开始挑剔话语是更有利的。
不,我们的经验表明,必须小心翼翼地找出所谈的内容。如果一个 "论坛成员 "是个傻瓜--那没关系,它发生了,人们甚至不应该大声地谈论它。但如果他是一个无知的顽固的傻瓜--那就对了,没有选择的余地。也不需要撒谎,我没有犯任何错误。不像你。
好吧,我的专家顾问中的Dll行为是正确的。这是我第五次告诉你,也是最后一次。也许我有一个不同的dll,这样一个灰色的、绝对无趣的dll,不像你的那样。
我无法准确地重现代码,但它是这样的
在一个快速的市场中,当每秒收到几个ticks时,这段代码在警报中产生了一个序列i=0,i=-1,i=-2,i=-3(取决于终端错过了多少ticks直到start()被执行),然后再次i=0。
错过的虱子--见鬼去吧,它发生了。但如果发生这种情况,并不意味着程序必须跳转一个条件指令,这在代码中实际上发生了两次(for循环也是一个分支指令)。
澄清循环条件i>=1而不是0,正如你在我混乱的第一篇帖子中所引用的,消除了疑虑--我开始以为你也走了。也生病了。
跳槽条件?酷。从未发生过。这个神奇的dll是什么?)))
你能重现这个结果吗?并看到了dll本身。不是说我不相信--我只是真的想学习如何编写这样的dll。这样,所有的东西都会点击到位。我以后有东西可以和聪明人谈了......。
因此,在我的EA中,Dll的行为是正确的。这是我第五次报告,也是最后一次。我一定有一个不同的dll,这样一个灰色的绝对无趣的dll,不像你的那样。
很好!你已经达到了一个新的水平--一个抽象的水平。
你可能有与人打交道的经验,可能在商业方面。
.
好吧,让我们运用这种推理。我很高兴你能接受我的论点。
就我而言,我只需要向大家保证,我的Dlls工作得更加正确。
无论如何,结果与Metatrader测试器和Neuroshell的Dll相同。
.
但作为一个无法进行简单测试并报告的人,不要再回答我。
>> 除了公众。