错误、漏洞、问题 - 页 325

 
AlexSTAL:
糟糕......。终端机上有这么多的例子......这么多的例子...例如,SymbolInfoSample.mq5脚本
有时在一开始就定义新的概念就足够了。然后才审查方案的例子。
 
我怎样才能得到包含文件的完整路径?


有两个功能

__FILE__- 它 给出文件名

MQL5_PROGRAM_PATH - 它给出了生成的 ex5文件路径


问题--我如何知道它在mqh-file中的位置?

 
在MetaEditor中,"文件中的函数列表 "按钮可以打开该列表。如果你向下滚动,它在P处结束,不再移动(指向下方的黑色三角形变得不活跃),尽管在R处也有课程。请修复它。
 
-Alexey-:
在MetaEditor中,"文件中的函数列表 "按钮可以打开该列表。如果你向下滚动,它在P处结束,不再移动(指向下方的黑色三角形变得不活跃),尽管也有带字母R的班级。请纠正。

而至少有近似规模的名单是什么?也许名单的大小是有限制的...
 

我不知道这是不是一个错误,还是我发现了一个窍门。下面的代码可以工作,但给出的警告是表达式不是布尔值

void OnStart()
  {
//---
   int a=3;
   int b=3;
   int c=3;
//---   
   if(a=b=c=3)Alert("a=b=c=3");
   else Alert("Условие не верно");
//---
  }
 
sergey1294:

我不知道这是个错误还是个骗局。下面的代码可以工作,但生成的表达式不是布尔型警告



为什么代码不应该工作?

唯一的问题是,if操作数没有转换为bool,这是编译器警告 的,但其他方面都是正确的。

a,b,c,顺便说一下,可以完全不初始化,因为它们在if中被明确分配。

3 赋值给a,将a 赋值给 b,将b 赋值给c,然后检查是否为真,然后写Print()。

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора - Документация по MQL5
 
sergey1294:

我不知道这是不是一个错误,还是我发现了一个窍门。下面的代码可以工作,但给出的警告是表达式不是布尔值


它可能是这样的。

void OnStart()
{
//----------------------------------------------------------------------------//
//Work variables
int a=3;
int b=3;
int c=3;
//----------------------------------------------------------------------------//
  if(a&&b&&c==3)Alert("a=b=c=3");
  else Alert("Условие не верно");
//----------------------------------------------------------------------------//
}
 

然后告诉我如何写这个表达方式,使其不至于骂人。

void OnStart()
  {
//---
   int a=1;
   int b=2;
   int c=3;
//---   
   if(a<b<c)Alert("a<b<c");
   else Alert("Условие не верно");
//---
  }
 
sergey1294:

然后告诉我如何写这个表达方式,使其不至于骂人。


if(a<b&&b<c){Print("");}

在第一个帖子中,你正在进行赋值操作,多个级联赋值是可以接受的。在这里,你正试图做一个多重比较。

由于你的输出中有两个比较结果,所以应该用&&或其他布尔运算符分开。

 
sergey1294:

然后告诉我如何写这个表达方式,使其不至于骂人。


我建议如下。

//----------------------------------------------------------------------------//
//Work variables
int a=1;
int b=2;
int c=3;
//----------------------------------------------------------------------------//
  if(a<b&&b<c)Alert("a<b<c");
  else Alert("Условие не верно");
//----------------------------------------------------------------------------//

尼古拉在你前面 :)

Urain

SZY 因为你的输出中有两个比较结果,它们应该用&&或其他布尔运算符分开。

在这种情况下,只有&&。