错误、漏洞、问题 - 页 2748

 
Sergey Dzyublik:

那是很多文字,还没有全部读完。
但如果你的东西在调试版中可以工作,但在发布版中却不能工作,反之亦然,那么请检查所有的变量和字段,尤其是类/结构中的变量和字段是否已经被初始化。

那些需要初始化的数据我已经初始化了。如果一些随机的数据碰巧在那里,它将导致程序本身的错误(例如,阵列超出范围或无效指针)。至少,它不会影响调试器的操作。而且,这有助于发现此类错误。

 
Mihail Matkovskij:

也许你有这样的缺陷:

(未被ME5(build 2390修复)。**(新)调试器,StepInto(F11)和安装的断点不起作用。

 
TheXpert:
也许你的文件结构非常复杂,以至于调试器无法关联断点,那么这就是调试器的问题了。

我认为我在项目 中使用的标准UI元素的文件结构甚至比我的工作还要复杂。我必须非常努力地工作,才能做出这样的东西。但既然如此,就拿去用吧,就像他们说的那样。如果你把所有东西放在一起,就像我的情况一样。然后,的确,你会得到一些复杂的东西。但是对于跑步项目来说,这是很正常的。

 
fxsaber:

最初,这被提出来是为了。


在某一阶段,不仅所花时间的相对部分变得重要,而且绝对部分也变得重要。

习惯于在C语言中分配变量的时间,这是一个好习惯。

在第一个自定义函数中,输入的MqlTick结构被直接传递给MQL函数,没有任何内存分配
这样的条目被称为不良编码。

bool GetCurrentTick1( MqlTick &Tick )
{
  return(SymbolInfoTick(_Symbol, Tick));
}

在第二个例子中,CurrentTick变量被创建;内存被分配给它。
而这个条目被认为是更正确的。
因为已经分配了内存,所以输入数据处理得更快,没有不必要的费用。

bool GetCurrentTick2( MqlTick &Tick, const bool NewTick = false )
{
  static MqlTick CurrentTick;
  
  if (NewTick)
    SymbolInfoTick(_Symbol, CurrentTick);
  
  Tick = CurrentTick;
  
  return(true);
}
 
Roman:

多学一点C语言,你会养成分配变量的习惯。

听从你自己的建议,你可能至少会得到一点分配的想法。
 
Roman:

...

而这个记录被认为是比较正确的。

谁计算的? 你至少可以先给我们测量一下速度。

 
Alexey Navoykov:

谁在数数? 你至少可以给我们一些速度的测量值来开始。

对一个巨魔来说,关注度太高了。

 
TheXpert:
如果你听从自己的建议,你可能至少会得到一丝分配的机会。

我所说的分配,是指内存分配
不是作为一个类的那种字面意思。
一个用户定义的函数有自己的范围。

 
Alexey Navoykov:

谁算? 你至少应该先给出一些速度测量值。

在前一页,fxsaber给出了测量结果。
我解释了为什么会发生这种情况。
始终以静态或动态方式分配内存。

 
Sergey Dzyublik:

也许你正在经历这个缺陷:

(未被ME5(build 2390修复)。**(新)调试器,StepInto(F11)和安装的断点不起作用。

有可能...我尝试了我上面描述的int CCheckGroup::itemCheckState(const string item)方法。而一开始,调试器确实会去那里。但是一旦它退出,调试器就再也看不到它了,断点和 "Step with enter "都不起作用。好吧,我们将不得不暂时用Print()和Alert()来做。