错误、漏洞、问题 - 页 1812

 
Sergei Vladimirov:

"医生,我有个东西很疼!"© )

给我一个这样的例子。一个可重复的。然后你就可以说些什么了。

ulong PackMagic(int bs, int type, int frac, int ll)//bs=0 - sell, bs=1 - buy (в смысле ll), type - это тип FPST
     {
        int d1;
        ulong i, frac1=frac, ll1=ll, type1=type;
        
        i=1; d1=10;
        while (ll>=d1) {d1=d1*10; i=i+1;}
              
        if (type==0 || type==2) return (frac1+ll1*Pow10frac_length+i*Pow10(frac_length+i)+
         type1*Pow10(frac_length+i+1)+bs*Pow10(frac_length+i+2)+Id1_class*Pow10(frac_length+i+3));
        else return(ll1+i*Pow10(i)+type1*Pow10(i+1)+bs*Pow10(i+2)+Id1_class*Pow10(i+3));
     }    
    
     ulong Pow10(ulong power) // power>0
     {
        ulong r=10;
        if (power==0) return 1;
        for (ulong i=2; i<=power; i++) r=r*10;
        return r;
     }

问题出在PackMagic函数中。外部变量int frac_length=2;int Pow10frac_length=100;int Id1_class=1;。

 
Sergey Kudryavtsev:
问题出在PackMagic函数中。外部变量int frac_length=2;int Pow10frac_length=100;。
你没有提供一个错误的例子。这个函数在哪个参数值上返回错误的值(哪个?),正确的结果应该是什么?
 
Sergei Vladimirov:
你没有举出一个错误的例子。这个函数在什么参数值下会返回错误的值(哪一个?),正确的结果应该是什么?

比如说。

Id1_class=1, bs=0, type=0, frac=99, ll=1, frac_length=2, Pow10frac_length=100, return返回11299。

它应该是1001199。在 "专家 "中,在 "类 "中的功能,在 "开放 "中的模拟账户。

在出错的情况下总是返回11299,这不是一个事实。

 
不能重现。使用这些参数,该函数稳定地返回1001199。函数本身也没有错误。因此,没有什么可说的。最有可能的是,你的专家顾问的问题不在这个函数中,而是在其他地方。 传递给函数的参数值与你预期的不同。因此,结果与预期的不同。
 

它正在播放。将你的代码写入脚本,在调试模式下运行时,它给出了正确的值(1001199),但如果我在MT5中编译发布并从树上运行它,它就会稳定地给出11199。我能够定位问题,这里是复制的代码。

int frac_length = 2;

void OnStart()
{
        
        ulong i = 1;

        ulong a1 = Pow10(frac_length + i);
        ulong a2 = Pow10(frac_length + i + 1);
        ulong a3 = Pow10(frac_length + i + 2);
        ulong a4 = Pow10(frac_length + i + 3);
        
        Print(IntegerToString(a1), " ", IntegerToString(a2), " ", IntegerToString(a3), " ", IntegerToString(a4));

}  

ulong Pow10(const ulong power)
{
        ulong r = 10;
        
        if (power == 0)
                return 1;
                
        for (ulong i = 2; i <= power; i++)
                r = r*10;
                
        return r;
}

在调试模式下,它可以正常工作。但在MT5中从导航仪开始发布时,要么产生胡言乱语("1000 10000 100 100",而不是 "1000 10000 100000 1000000"),要么MT5在处理器的一个核心满负荷时挂起。

有两种方法可以解决这个问题。这两种方式中的任何一种。

        ulong a1 = Pow10(frac_length + i);
        ulong a2 = Pow10(frac_length + i + (ulong)1);
        ulong a3 = Pow10(frac_length + i + (ulong)2);
        ulong a4 = Pow10(frac_length + i + (ulong)3);

或者通过将全局变量frac_length移到Start()函数内。

这的确是一个编译器错误,请写给服务台

 
MT4开始重1.8千兆字节(RAM)。它吃掉了所有的UPU,第二个终端无法正常开启。你能告诉我如何 "清理 "MT的RAM吗?
 

当把鼠标悬停在一个刚刚发表的自己对市场产品的评论上时,会出现几个建议/行动。如果你选择 "编辑 "并改变评论,在点击 "更新 "后会弹出一个 "无权 "的错误。

无法创建对SR的应用 -发生了一个错误

 
fxsaber:
当把鼠标悬停在一个刚刚发表的自己对市场产品的评论上时,会出现几个建议/行动。如果你选择 "编辑 "并改变审查,在点击 "更新 "后会弹出 "无权 "的错误。

请说明你的浏览器的名称和版本。
在chrome 56.0.2924.87上,无论是否手动刷新审查页面,飞行都很正常。

 
fxsaber:

无法创建对SR的应用 -发生了一个错误

我明白了,你需要为www.mql5.com,清除cookies。
显然,反CSRF令牌检查原则已经有了更新。

在chrome中,你可以这样做。
www.mql5.com,按F12 => 在仪表板上进入应用程序 => Cookies => 点击cookies => 清除所有从...
 
Sergey Dzyublik:

请说明你的浏览器的名称和版本。
在Chrome 56.0.2924.87上,无论是否手动刷新审查页面,飞行都很正常。

便携式Chrome版本45.0.2454.85 + Frigate.