初学者的问题 MQL4 MT4 MetaTrader 4 - 页 201

 
Alexsandr San:

我放在这里的代码,我已经删除了,我没有立即注意到这里讨论的是mt4

MQL4

 
Speculator:

MQL4

在这里,有很多好东西https://www.mql5.com/ru/forum/131859/page6#comment_3359705
 
你好,当终端关闭,但连接着VPS服务器时,是否可以在MT4中接收电话/邮件通知
 
Alexsandr San:

我建议你--有很多好东西可以找https://www.mql5.com/ru/forum/131859/page6#comment_3359705

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
有没有办法通过应用宏来查看所产生的代码会展开成什么?
 

一个更具体、也许更有趣的问题。

我在不同的功能中使用相同的结构

if(FileReadStruct(handle,temp_rate)!=60)
{
  IsError=true;
  Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError());
  return;
}

然而,有些函数是无效类型 的,有些则返回一个值,所以我从这些函数中返回零。

return(0);

我可以做一个神奇的宏,在每一种情况下为我替换出正确的一个吗?

 
Yurij Kozhevnikov:

一个更具体、也许更有趣的问题。

我在不同的功能中使用相同的结构

然而,有些函数是无效类型 的,有些则返回一个值,所以我从这些函数中返回零。

我可以制作这样一个神奇的宏,在每一种情况下都能为我替代必要的变体吗?

在宏中使用return是一把指向自己腿部的扣动的枪,当与if结合时--它变成了一门大炮)))但如果你真的想。

#define  CHECK_READ(dHndl,dRate,dRet)  do \
if(FileReadStruct(dHndl,dRate)!=60){    \
  IsError=true;   \
  Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError()); \
  return dRet;} while(false)
  
...
CHECK_READ(handle,temp_rate,);
...
CHECK_READ(handle,temp_rate,0);
...

我没有测试过,但它应该可以工作。还把枪变回了手枪)))。

 

谢谢你!

因此,我在最后一个参数中要么传入一个返回值,要么传入一个空白,这将变成

return ;

和一个空格意味着什么。当然,我怎么忘了它可以不使用我最喜欢的括号。

return(x);
return x; //равноценны

顺便问一下,你能告诉我为什么这个结构是在一个只能执行一次的循环里面吗?它是一门大炮变回了枪吗?可能的情况是无限递归或类似的情况?

 
Yurij Kozhevnikov:

谢谢你!

因此,我在最后一个参数中要么传入一个返回值,要么传入一个空白,这将变成

和一个空格意味着什么。当然,我怎么忘了它也可以不使用我最喜欢的括号。

另外,你能告诉我为什么这个结构被塞在一个只能执行一次的循环里吗?它是一把枪变回了一把枪吗?可能的情况是无限递归或类似的情况?

if (condition) CHECK_READ(h,r,0); else CHECK_READ(h,r,1);
部署没有do-while包装器的宏,看看会发生什么))))。
 
Vladimir Simakov:
if (condition) CHECK_READ(h,r,0); else CHECK_READ(h,r,1);
部署没有do-while包装器的宏,看看会发生什么))
if (condition) if(FileReadStruct(h,r)!=60){   
  IsError=true;   
  Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError()); 
  return 0;}; else if(FileReadStruct(dHndl,dRate)!=60){    
  IsError=true;   
  Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError()); 
  return dRet;};

if (condition) 
 if(FileReadStruct(h,r)!=60)
 {   
  IsError=true;   
  Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError()); 
  return 0;
 }; 
 else 
  if(FileReadStruct(dHndl,dRate)!=60)
  {    
   IsError=true;   
   Print(__FUNCSIG__," Не удалось прочитать данные из файла по причине ошибки ",GetLastError()); 
   return dRet;
  };

如果我对替代原则理解正确的话,情况似乎就是这样。

大括号后有多余的分号。而且不清楚现在还指的是什么。

遗憾的是,显然没有简单的方法来自动进行宏观扩展,看看会发生什么。除非你能制作自己的脚本。

谢谢你!宏中的while后面没有分号是有原因的。