错误、漏洞、问题 - 页 1161

 
joo:

v4.3,自定义固件。

主窗口是横向位置,其他对话(订单)是纵向位置。恼人的不可控的从主窗口到对话框的来回切换。

来吧....甚至像Smart Rotator这样的专业软件也没有帮助....。

有趣的是,如果你在终端的智能旋转器中强行设置横向,所有的窗口都会变成横向。- 我为终端设置了纵向模式,然后呢?- 嘿嘿...仍有一些窗口是横向的,一些是纵向的。

 

元编辑中的一个缺陷。

假设我们有一些函数Obj(),返回一个指向对象的指针。

class CObject {   public:     int value; }; CObject object;

CObject* Obj() { return GetPointer(object); }

现在,如果我们直接通过函数引用对象:Obj().value= 10,在输入一个点后,不会出现弹出的 成员和方法 列表。

 
meat:

鉴于MQL不支持类模式,CArray类 并不是万能的。 我们的数组不一定由简单的类型组成,为程序中的每个新类创建一个完整的CArray后裔结构并不十分有趣。看看每个CArray的后代文件需要多少行代码(ArrayInt.mqh, ArrayDouble.mqh等)。

而程序结构如何组织则是次要的。我们不要偏离主题。 重点是,如果有一些可以改变的参数(在这种情况下是reserve_size),应该可以得到它。

复杂类型继承自CObject,并安全地打包在CArrayObj中。

reserve_size - 打破了经济编程的范式。它只为初学者而存在,在正常的语言中一定根本不存在。

 
C-4:

reserve_size - 违反了节俭的编程范式。它只为初学者存在,在正常的语言中根本不应该存在。

你有一个奇怪的范式。预留正是为了经济地使用资源,减少内存重新分配和数据传输的次数(而这些都是相当昂贵的操作)。 而必须管理这个参数的是代码开发人员,因为只有他事先知道他的程序将如何使用内存。 而且这与语言无关,因为数组就是数组,它到处都需要内存。

 
meat:

这对你来说是一个奇怪的范式。预留正是为了经济地使用资源,减少内存重新分配和数据传输的次数(而这些都是相当昂贵的操作)。 而必须管理这个参数的是代码开发人员,因为只有他事先知道他的程序将如何使用内存。 而且这与语言无关,因为数组就是数组,它到处需要内存。

所以你已经回答了你自己的问题。

应该由代码开发人员来管理这个参数,因为只有他事先知道他的程序将如何使用内存。这与语言完全没有关系。

它与语言手段无关,因此必须在更高的、用户层面上解决。因此,用专门为这些任务创建的CArray* 类来解决你的任务,顺便说一下,CArray* 类能出色地处理这个任务,就像为它创建的一样。

 
meat:

你有一个奇怪的范式。冗余的设计正是为了节约使用资源,减少内存重新分配和数据传输的次数(这是相当昂贵的操作)......

void TestFoo()
{
  CArrayObj listObj;
  listObj.Resize(100);
  for(int i = 0; i < 100; i++)
     listObj.Add(new CObject());
  int count = CountObj(listObj);
}

void CountObj(CArrayObj* obj)
{
   return obj.Size();
}
超级省钱的代码。由于事先知道元素的数量,所以根本不会发生内存的重新分配。传递的不是数组,而是指向数组的指针。速度快得令人难以置信,而且不需要 reserve_size。你不喜欢这个解决方案的什么?
 
C-4:
超级省钱的代码。完全没有内存的重新分配,因为项目的数量是事先知道的。传递的不是数组,而是指向数组的指针。速度快得令人难以置信,而且不需要 reserve_size。这个解决方案有什么不适合你的地方?

诶,要是这么简单就好了......在现实世界中,元素的数量通常不是事先就知道的。更重要的是,这个数字是动态变化的。所以你简化的 "Hello world "的例子是没有意义的。它只需用两行字就可以取代。

CObject listObj[100];
int count = ArraySize(listObj);

好吧,这些垃圾有什么意义? 如果你个人不使用reserve_size参数,欢迎你。但不要做出其他人都是傻瓜或新手的结论。在标准的STL容器中,被设计用来处理数组(向量、字符串等),像储备容量 这样的方法也总是存在的。

 
joo:

来吧....甚至像Smart Rotator这样的专业软件也没有帮助....。

有趣的是,如果我在终端的智能旋转器中强制要求横向,所有的窗口都会变成横向。但我想要的是纵向模式- 我把终端设置为纵向模式,然后呢?- 嘿嘿...仍有一些窗口是横向的,一些是纵向的。

在库存固件上运行良好(至少与预期一致)。
 

在最新的版本中,MetaEditor中的搜索(右上角 的方框)不再正常工作。当我在那里输入我要找的词时,它自动用一些类似的短语代替,这些短语来自我不知道的地方,没有任何理由。结果,你无法在你的代码中找到任何东西。 例如,我试图找到一个名为 "ERROR_VALUE "的变量,但在搜索行中得到的却是 "error_value 7"。

问题:怎么了? 搜索栏里的这些左派垃圾是怎么来的,怎么把它弄出来?

 
meat:

在最新的版本中,MetaEditor中的搜索(右上角 的方框)不再正常工作。当我在那里输入我要找的词时,它自动用一些类似的短语代替,这些短语来自我不知道的地方,没有任何理由。结果,你无法在你的代码中找到任何东西。 例如,我试图找到一个名为 "ERROR_VALUE "的变量,但在搜索行中得到的却是 "error_value 7"。

问题:怎么了? 搜索栏里的这些左派垃圾是怎么来的,怎么把它弄出来?

清理键盘。