错误、漏洞、问题 - 页 1118

 
Zeleniy:
我想明白了,我有一个多月的安装文件,现在我下载了一个新的安装文件,它可以工作了,我不认为安装文件在变化,因为它之后下载的文件是正确的。
恰恰相反...如果旧的不显示表格,为什么会开始显示它......这很奇怪...
 
micle:
反过来说旧的那个,如果它没有显示标志,为什么会开始显示它......这很奇怪...
我不知道,但新的表现像往常一样,没有任何平板电脑,开始下载安装文件。
 
Zeleniy:
我不知道,但新的一个表现如常,没有任何迹象,并开始下载安装文件。
神秘性...
 
Zeleniy:
我不知道,但新的表现像往常一样,没有任何标签,开始下载安装文件。

我遇到过,在安装过程中出现这样的窗口,可能与电脑上的保护有关(显然是由于一些定期的更新),以及随后的奇特表现。

不管是以前的还是刚下载的安装文件,都没有关系。

现在我记下了,为了将来,以防万一,这个新的依赖对我来说(我现在不做实验)。

但我很高兴你的问题得到了解决。

作为一个建议:据我记得,最近有一个 MT5终端的更新。也许在这种情况下,代理提示、过期的安装文件和在线安装过程之间存在某种联系。
 

从2014.04.04 10:14的新MT5 构建的变化列表中可以看出:"3.终端:修复了 一个在某些情况下 导致图形对象不能在图表上绘制的 错误。" 我不知道开发者是否已经满足了我在SD#966979中的要求,或者这是另一种修复,甚至是下一个构建中的某些改进的副作用,但无论如何,我现在已经没有问题了。变更清单上说这是一个错误,但在与SD 的通信中,我被明确告知"这不是一个错误,是为了节省资源的一个限制。"

你现在可以像以前一样在任何TF上舒适地观看TA的构建。

谢谢你,我将关闭该申请。

 

方法常量 可以在派生类中被重写(构建917)。

class A {
public:
        virtual void f() const {}
        int x;
};
class B : public A {
public:
        virtual void f() /*не const*/ { x = 2; }
};
void g( const A* a ) { a.f(); }
void OnStart()
{
        A *a = new B();
        a.x = 1;
	Print( a.x ); //результат = 1
        g( a );
        Print( a.x ); //результат = 2, а обещали, что g( const A* ) не может менять объект
        delete( a );
}

另一个例子

class A {
public:
        virtual void f() const { Print( "1" ); }
};
class B : public A {
public:
        virtual void f()       { Print( "2" ); }
};
void g( const A* a ) { a.f(); }
void OnStart()
{
        A *a = new B();
        g( a );
        delete( a );
}

结果=2,但在C++中结果=1

错误不在于在派生类中你不能声明与基类相同名称的方法(这是允许的),而在于C++认为它们是不同的,而MQL认为B::f()覆盖了A::f()常量。

 

Print()函数 将浮动信号非数字输出为非信号,这是不符合逻辑的,因为double正常输出这两种信号。

Float必须:1)从非信号中去除前缀Q,然后信号和非信号将以同样的方式打印,或者2)输出带有前缀S的信号。如果我错了,请给我一个信号浮点非数字的例子,它将被Print()函数打印出来,没有前缀Q

例如,我把一个非数字的双信号,转换为浮点数,并通过Print()输出两者。在第一种情况下,它打印SNAN,在第二种情况下打印QNAN。

 

在探究从测试器向文件写入数据的方法的过程中,这里有一个错误(缩短了,因为它不适合)。

2014.04.08 01:47:30.531 2013.07.01 02:10:00   00: 0x000000013FD1F038
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1F04D 498 BCD            mov        rcx, r13
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1F04A 41 B001            mov        r8b, 0x1
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1F043 80 BD3804000000    cmp        byte [rbp+0x438], 0x0
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1F040 83 C202            add        edx, 0x2
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1F03D 418 BD4            mov        edx, r12d
2014.04.08 01:47:30.531 2013.07.01 02:10:00   
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1F03B EB03              jmp        0x13fd1f040
2014.04.08 01:47:30.531 2013.07.01 02:10:00      crash -->  000000013 FD1F038 8 B50FC            mov        edx, [rax-0x4]
2014.04.08 01:47:30.531 2013.07.01 02:10:00   
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1F033 4885 C0            test       rax, rax
[cut]
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1EE6E 55                push       rbp
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1EE67 4 C894018          mov        [rax+0x18], r8
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1EE63 48895808          mov        [rax+0x8], rbx
2014.04.08 01:47:30.531 2013.07.01 02:10:00                 000000013 FD1EE60 488 BC4            mov        rax, rsp
2014.04.08 01:47:30.531 2013.07.01 02:10:00   Access violation at 0x000000013FD1F038 read to 0x00000003FFFFFFFF

当然,我明白这个错误是我笨拙的自然结果。而且在任何情况下,它很快就被修复了(问题出在试图通过第三个函数将非字符串数据传入FileWrite,如果有必要的话--我可以更详细地描述它)。但这个错误看起来不是很清楚,有点吓人:)而且编译器也没有在任何地方提示它是应该的。也许我们至少应该添加一些扭曲或其他的东西......。

 
Lone_Irbis:

在探究从测试器向文件写入数据的方法的过程中,这里有一个错误(缩短了,因为它不适合)。

当然,我明白这个错误是我笨拙的自然结果。而且在任何情况下,它很快就被修复了(问题出在试图通过第三个函数将非字符串数据传入FileWrite,如果有必要的话--我可以更详细地描述它)。但这个错误看起来不是很清楚,有点吓人:)而且编译器也没有在任何地方提示它是应该的。也许我们至少应该添加一些扭曲或其他的东西......。

是的,请更详细地描述。

对构建、操作系统、比特率、测试器设置 感兴趣。请附上代码以供复制。

谢谢你。

 

好吧,我试试。我能够把它回滚到正确的时刻并重现它,但我无法隔离这个错误并单独重现它......

Build: MetaTester 5 x64 build 910 (07 Mar 2014)https://dl.dropboxusercontent.com/u/61587787/bugreport/build.png

Win7 x64桌面https://dl.dropboxusercontent.com/u/61587787/bugreport/system.png

从测试器窗口复制:https://dl.dropboxusercontent.com/u/61587787/bugreport/log.txt

测试者的截图(嗯,你永远不知道)https://dl.dropboxusercontent.com/u/61587787/bugreport/tester1.png https://dl.dropboxusercontent.com/u/61587787/bugreport/tester2.png

测试仪设置(我不知道我是否知道我的意思):https://dl.dropboxusercontent.com/u/61587787/bugreport/config.png

代码片段。

   int idx = 133;
   WriteCSV("test.csv",idx);
   
class Core { 
public:  
   void     WriteCSV(string FileName, string s1, string s2, string s3, string s4, string s5, string s6);
};

void Core::WriteCSV(string FileName, string s1, string s2="", string s3="", string s4="", string s5="", string s6=""){
   int handle = FileOpen(FileName,FILE_CSV|FILE_WRITE|FILE_SHARE_WRITE|FILE_UNICODE|FILE_COMMON,"~");
   if(handle == INVALID_HANDLE) Print("error");
   else FileWrite(handle,s1,s2,s3,s4,s5,s6);
   FileClose(handle);
}

如果用WriteCSV("test.csv",(string)idx) 代替;--错误就会 消失。其他非字符串的变量在这里没有任何作用。不过,idx等于什么似乎并不重要(它只是数组中新闻的序列号)。在试图保存结果时,在任何新闻上重现。在这些警告中,只有从 "数字 "到 "字符串 "的隐式转换显示出来,但同样,只有在这种情况下才会变成崩溃

我真的不想在这里发布完整的代码和.集,但我可能会把它发送到某个地方。