错误、漏洞、问题 - 页 2332

 
Vladimir Pastushak:

根据帮助,如果文件不存在,它应该返回false。

严格来说,从文件中并不能看出FileGetInteger(FileName,FILE_EXISTS)的结果一定是一个bool。

但无论如何,这个逻辑都是华丽的

https://www.mql5.com/ru/forum/1111/page1788#comment_4071879

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.02.08
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

该网站引擎没有用红色突出显示宏。

 
Vladimir Pastushak:

bool file_exists=(bool)FileGetInteger(FileName,FILE_EXISTS)。

在任何情况下,如果有文件或没有文件,它将返回true,如果没有文件,则返回错误5019。根据帮助,如果没有文件,它应该返回false。

bool file_exists=FileIsExist(FileName); 正确工作

正确的方式应该是

bool file_exists=FileGetInteger(FileName,FILE_EXISTS)==1; 
 
Vladimir Pastushak:

在mt 5中得到了它

请通过PM提供代码进行研究

 
fxsaber:

网站引擎并没有用红色突出显示该宏。

只有在以前定义过宏的情况下,才应该用红色标出。

#define  PRICEST_TICK_PRICE bid
//...
#define PRICEST_TICK_PRICE ask

否则你怎么知道一个宏以前没有被定义过呢!而且这不是一个意外的重写

有时甚至在MetaEditor中也能发挥作用。


 
A100:

只有在以前定义过宏的情况下,颜色才应该被强调。

否则我们怎么知道这个宏以前没有被定义过呢!而且这不是一个意外的覆盖。

那么我们需要定义什么是高亮的宏,什么是不高亮的?

以为所有的宏都被突出显示了。显然,规则是不同的。

 
fxsaber:

然后我们需要决定什么是高亮的宏,什么是不高亮的宏?

我以为所有的宏都是突出显示的。显然,规则是不同的。

我认为我们需要决定高光的作用是什么,是仅仅为了美丽还是为了信息量大?目前还没有这样的规则。

一般来说,如果一个标识符已经被定义了,而且不是没有防御的,最好用颜色突出显示出来

 
A100:

我认为我们需要决定照明的目的是什么:是为了美还是为了信息?目前还没有这样的规则。

对我来说,经验法则是:宏观总是红色的。

 
fxsaber:

对我来说,这个规则是很方便的:宏总是 红色的。

这里的便利是什么?
#define PRICEST_TICK_PRICE bid

不方便之处显而易见:你无法判断PRICEST_TICK_PRICE 标识符以前是否被定义过

而为什么要在这里 (3)

//Ln 240
#define  PRICEST_TICK_PRICE ask //(1)
#undef  PRICEST_TICK_PRICE     //(2)
void OnStart()
{
        int PRICEST_TICK_PRICE; //(3)
}

是红色?而如果这里不是红色的(3),为什么在(1)中应该是红色的?

方便的规则:一个标识符只有在以前(!)定义过并且没有撤销的情况下才是红色的。

 

A100:
А в чем здесь удобство?

我可以看到,这是一个宏观。在这种情况下,你不需要看到#define laterally。

其不便之处显而易见:无法了解PRICEST_TICK_PRICE 标识符是否以前定义过。

我从未试图通过颜色来确定它。此外,如果一切都在#ifdef中,MQL4和MQL5可能有不同的颜色。最简单的方法是在宏名称上做ALT+G,看看它是否存在。

方便的规则:只有在以前(!)定义过的标识符才是红色的。

如果在#define、#ifdef、#undef等地方至少提到一次该宏,我会很舒服。即使它没有被定义。