错误、漏洞、问题 - 页 1327

 

在##中,你不能使用第一个数字

#define  MACRO( x, y )   x##y
void OnStart()
{
        int i = MACRO( 1, 5 );
        Print( i );
}
 

你不能在某个组合中省略宏参数

#define  MACRO1( x )             void x() { Print( __FUNCTION__ ); }
#define  MACRO2( prefix, function )      MACRO1( prefix##function )
#define  MACRO3(         function )      MACRO2(         h2, function )
#define  MACRO4(         function )      MACRO2( /*опущен*/, function )
//---
   void f1() { Print( __FUNCTION__ ); }
MACRO3( f2 )          //нормально
 MACRO4( f2 )          //Ошибка: argument expected for the function-like macro
//---
void OnStart()
{
        MACRO( /*опущен*/, f1 ); //нормально
        h2f2();
        f2();                   
}
 
Karputov Vladimir:
没有。该文件没有从标准交付中修改,也没有使用MQL5存储。用户可能进入了一个不同的 "数据文件夹"--至少这是目前最可行的版本。
在电脑上搜索了一圈。文件毕竟是死的((使用的操作系统是Windows Server 2012。该文件被固定在 "C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\9A8888D580475F4165FB840CCD79A65C\MQL5\Scripts "文件夹中(最后日期-2015年3月)。我不知道它是如何发生的,它被一个具有相同名称的文件覆盖,但来自 "C:\Program Files\MetaTrader 5\MQL5\Scripts "文件夹(最后修改日期 - 2014年8月)。带有mq5扩展名的源文件已经被重写,而编译后的文件仍然是最新版本。 我没有使用过MQL5存储,现在我要使用了。
 
kogriv:
搜查了电脑。文件毕竟是死的((使用的操作系统是Windows Server 2012。该文件在 "C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\9A8888D580475F4165FB840CCD79A65C\MQL5\Scripts "文件夹中(最后日期-2015年3月)。我不知道它是如何发生的,它被一个具有相同名称的文件覆盖,但来自 "C:\Program Files\MetaTrader 5\MQL5\Scripts "文件夹(最后修改日期 - 2014年8月)。带有mq5扩展名的源文件已被重写,编译后的文件仍保留在最新版本中。 我没有使用过MQL5存储,现在我要使用了。
在C:\Program Files\MetaTrader 5\MQL5\Scripts!如果一个文件出现在那里,那只是因为MetaEditor工作中的人工干预。所有编辑和创建文件的工作必须发生在数据文件夹C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\9A8888D580475F4165FB840CCD79A65C\MQL5\....
 
Karputov Vladimir:
在C:\Program Files\MetaTrader 5\MQL5\Scripts文件夹中,您的(用户)文件不应该存在!如果一个文件出现在那里,那只是因为MetaEditor工作中的人工干预。所有编辑和创建文件的工作应放在数据文件夹C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\9A8888D580475F4165FB840CCD79A65C\MQL5\....
我首先复制了它(C:\Program Files\MetaTrader 5\MQL5\Scripts),因为我不知道服务器上文件位置的特殊性,然后我把它复制到正确的文件夹。我不认为这是 "对工作的干扰......"。
 
kogriv:
起初我把它复制到那里(C:\Program Files\MetaTrader 5\MQL5\Scripts),因为我不知道服务器上文件位置的特殊性,然后我想明白了,把它复制到正确的文件夹。我不认为这是 "篡改..."。
正是如此--人工干预。您必须将您的所有文件从C:\Program Files\MetaTrader 5\MQL5\...(剪切和粘贴)移动到其正确的位置:C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\9A8888D580475F4165FB840CCD79A65C\MQL5\....
 
Karputov Vladimir:
正是如此--人工干预。您的所有文件从C:\Program Files\MetaTrader 5\MQL5\...应该被移动(剪切和粘贴)到他们合适的地方:C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\9A8888D580475F4165FB840CCD79A65C\MQL5\....
如果你没有把它剪掉呢?
 
kogriv:
如果你没有把它剪掉,但你把它放进去...
在这种情况下,你的覆写情况又要发生了。用户有一个数据文件夹 - C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\9A8888D580475F4165FB840CCD79A65C\MQL5\....如果你想把文件写进其他文件夹,你要自己承担风险。毕竟,这是你的钱。
 
Karputov Vladimir:
在这种情况下,你的覆写情况又要发生了。用户有一个数据文件夹 - C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\9A8888D580475F4165FB840CCD79A65C\MQL5\....如果你想把文件写进其他文件夹,你要自己承担风险。毕竟,这是你的钱。

那么/portable键呢?

顺便问一下,这些文件夹 "sdfgshndyueenerneb673756nr76,.t89.y80.tr76m5nbwb6qw6b3qvqvb6547nw8nme789m "是什么?如果安装了几个终端,要确定哪个文件夹属于哪个终端并不是一件容易的事。当然,你可以用MT工具来输入,但在其他情况下,这是一个痛苦的过程,所以/portable是我们的选择。

 
Andrey Dik:

那么/portable键呢?

顺便问一下,这些文件夹 "sdfgshndyueenerneb673756nr76,.t89.y80.tr76m5nbwb6qw6b3qvqvb6547nw8nme789m "是什么?如果安装了几个终端,要确定哪个文件夹属于哪个终端并不是一件容易的事。当然,你可以用MT工具来输入,但在其他情况下,这是一个痛苦的过程,所以/portable是我们的选择。

用户已经做了一次实验,结果文件被覆盖了。我认为,第二次他不会被烧死。