错误、漏洞、问题 - 页 1492

 
Maxim Khrolenko:
而全球(而不是外部)不是,这不是好事。

为什么它不好呢?明确地说,全局变量在程序启动时被初始化一次。

你想要不同的行为,在OnInit中按你的要求进行初始化

 
Yuri Evseenkov:
在文件中反映这一点会很好。
是的,我们会的。
 
zaskok3:
在MQL4++中,当我需要以编程方式 改变输入参数 时,我不能不使用extern。例如,当把一个标准的指标转换为一个交互式的指标时,我必须用extern来代替input。编译器将输入变量视为常量,并对试图改变它们的行为提出抱怨。有了extern,就没有这样的问题了。

使用输入参数的 "倍增器"。

我们在MQL5\Indicators\Examples\ADX.mq5中有一个例子。

//--- input parameters
input int InpPeriodADX=14; // Period
//---- buffers
double    ExtADXBuffer[];
double    ExtPDIBuffer[];
double    ExtNDIBuffer[];
double    ExtPDBuffer[];
double    ExtNDBuffer[];
double    ExtTmpBuffer[];
//--- global variables
int       ExtADXPeriod;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- check for input parameters
   if(InpPeriodADX>=100 || InpPeriodADX<=0)
     {
      ExtADXPeriod=14;
      printf("Incorrect value for input variable Period_ADX=%d. Indicator will use value=%d for calculations.",InpPeriodADX,ExtADXPeriod);
     }
   else ExtADXPeriod=InpPeriodADX;
 
同志们,有没有人在编译时经常出现 "内部编译器错误"?没有明显的原因,在重新编译的情况下--挂起,在关闭编辑器的情况下,再次打开它(用同样的标签,用同样的代码)--编译通常是正常的。代码中没有任何变化!但有时这种错误会连续发生几次,第一次重启编辑器也没有用。到目前为止,由于重新加载的结果,所有的东西都成功地编译了。但我担心,它迟早会停止工作。我想找到其他遇到类似bug的人,这样我们就可以一起向servicedesk提供关于其发生条件的数据。
[删除]  
Slawa:

对输入参数使用 "倍增器"。

我们在MQL5\Indicators\Examples\ADX.mq5中有一个例子。

现在,要将一个指标转换为交互式版本,你只需要在源代码中添加一行。如果你做的是双关语,除了创建双关语的额外字符串外,你必须对整个文本进行替换。你只需改变一行就可以了,何必这么麻烦。

是什么阻止了你在编译时删除输入变量的 const-awareness?

 
zaskok3:

要将该指标转换为交互式变体,你只需在源码中添加一行。如果你做的是复式,那么除了要多写一行来创建复式外,你还需要替换整个文本。为什么这么麻烦,因为你可以轻松地改变一行。

是什么阻止了你在编译时删除输入变量的 const-awareness?

文本编辑。"Ctrl" + "H" - 搜索和替换。并不复杂。只是不要偷懒。
 
zaskok3:

是什么阻止了你在编译时删除输入变量的 const-awareness?

在MT5历史库中全局存储指标。对他们来说,输入参数是关键。当你改变输入参数时,带有旧参数的指标被销毁,带有修改过的参数的同一指标被重新创建。

也就是说,这种限制是纯粹的建筑性限制

在第四个版本中,我们可以从实例中删除常量,但这样一来,新的MQL4和MQL5就不兼容了。因此,我们不会这样做。请继续使用extern

[删除]  

Slawa:

也就是说,这种限制是纯粹的建筑性的。

遗憾的是,架构是如此僵化,甚至没有简单的灵活性的可能性。事实证明,MQL5中的互动性将需要一个拐杖。问题是,如果语言限制了可能性,那么优势在哪里呢...。
 
pako:
脱离终端的窗口
怎样?
[删除]  
Joo Zepper:
怎样?
这是在某个论坛上,一个DLL