错误、漏洞、问题 - 页 2472

 

我创建了一个自定义符号,并将25年的日线填入其中,这应该重约400kb。 然而,在符号文件夹中,创建了.hcc文件,总大小为15mb!除此之外,这一切都需要20秒!这是不可能的......你怎么解释这个?

 
Sergey Dzyublik:

我惊讶地发现,可以用一个指向模板函数的指针来声明typedef。
然而,这种幸福并没有持续多久。

这就是我所说
 

最近报告了MT的几十个 "功能 "和错误。
我们如何知道是否值得等待它们被修复?
请不要建议在每次发布新版本时都测试所有东西。

(在MT5(build 2057)中没有修复)"策略测试员:计划中的2次通过,但实际上由于 "OnInit关键错误 "的错误,导致无限次的通过>900pc"。
(未在MT5(build 2057)中修复)"对于具有动态数组的结构,默认赋值运算符中的数组大小字段数值无效"。
(未在MT5(build 2057)中修复)"当从一个函数中按值返回一个类对象时,编译器没有看到该类的默认复制构造函数"。
(未在MT5(build 2057)中修复)"对于模式类和 "复杂 "结构,在类型投射 "本身 "上的编译错误"。
(未在MT5(build 2057)中修复)"当使用typedef时,使用具有明确专业化的模板函数不会为该模板函数生成代码"。
(未在MT5(build 2057)中修复)"在typedef中重复使用相同的函数签名时出现编译错误"
#
(未在MT5(build 2057)中修复)"字符串函数的主要部分对字符串中的NULL字符不起作用(例如:ShortArrayToString, StringInit, StringFill)"。
(未在MT5(build 2057)中修复)"StringSetLength函数只能 "修剪 "字符串的长度,不能增加它。
(在MT5(build 2057)中固定)"策略测试器:750 "metatester64.exe "进程运行"。
#
"论坛 www.mql5.com,当编辑带有图片的信息时,之前的图片不会被新的图片取代"


建议。
"允许用户强制生成/删除默认赋值运算符(复制构造器)的代码"。
"允许ArrayCopy复制类和 "复杂 "结构,类似于结构为任何对象类型提供深度复制功能的方式"。
"在使用动态数组时为用户提供读取/设置容量值的功能"

"为改善信号服务的信息图而做出的改变"

 
A100:
这就是我所说 的。

模板类型化在模板类中 使用类型化 是两码事。
第二种方案可行,但在重复使用不同类型的模板类时,会出现命名空间重叠的问题。

 
Alexey Navoykov:

我创建了一个自定义符号,并将25年的日线填入其中,这应该重约400kb。 然而,符号文件夹创建的.hcc文件总大小为15mb!除此之外,这一切都需要大约20秒!出了问题...这怎么解释?

看看有什么记录。

 
fxsaber:

看看所记录的内容。

好吧,我不知道hcc格式,所以我不能检查文件中的内容。 但是在终端,它显示的是日线。 当我切换到较小的时间框架时,我看到的是同样的条形。 显然,它最初也是将所有时间框架保存到文件中,所以...我以为只有分钟条形图被保存,然后从这些条形图中合成所有其他的时间段。 而分钟条形图的数量,正如已经说过的,与日线相吻合,也就是说,总共有大约7000个分钟条形。

因此,我有一个想法,它将7000*M1,7000*M2,7000*M3,等等,直到7000*D1保存在一个文件中。 如果是这样,它可能总共会取到15MB。纠正:约5(20--更新现有历史时)。

 

论坛网站出了问题:我看不到我的最新帖子。
例如,"所有帖子"中缺少这个和 这个
而在几个月前,似乎评分曾经超过6000分。但不知道--也许评级可能会因活动减少而逐渐降低。

 
class A{
public:
   struct AA{
      uchar data[8];
   };
   static AA obj;
};

AA A::obj = {0};     // OK


template<typename T>
class B{
public:
   struct BB{
      T data[8];
   };
   static BB obj;
};

template<typename T>
BB B::obj = {0};       //'BB' - declaration without type    




void OnStart(){  
   ArrayPrint(A::obj.data);
   //ArrayPrint(BB<int>::obj.data);
}


目前不可能使用在模板类中声明的静态变量
随着名称空间的引入,这种限制是否可以绕过?

 
Sergey Dzyublik:


目前,不可能使用在模板类中声明的静态变量
随着命名空间的引入,这种限制是否可以被绕过?

这与变量无关。它不能看到BB类。 它必须在B类之外采取模板<typename T> class BB

 
Alexey Navoykov:

这与变量无关。它没有看到BB类,它需要被移到B类之外,作为模板<typename T>class BB。

该帖子是针对开发者的,如果他们将 "欺骗 "支持开箱。

同样,问题是不能使用在模板类中声明的静态变量
你建议在类型化的情况下怎么做。

 
class A{
public:
   typedef void (*callback_A)();
   static callback_A f_ptr;

};
callback_A A::f_ptr = NULL;                  // Ok


template<typename T>
class B{
public:
   typedef T (*callback_B)();
   static callback_B f_ptr;
};
template<typename T>
callback_B B::f_ptr = NULL;                  //'callback_B' - declaration without type	

void func_A(){PRINT(__FUNCSIG__);}
int func_B(){PRINT(__FUNCSIG__); return 0;}

void OnStart(){  
   A::f_ptr = func_A;
   A::f_ptr();

   //B<int>::f_ptr = func_B;
   //B<int>::f_ptr();
}