MQL4找不到文件

时间:2018-03-07 14:10:46

标签: path mql4

以下代码找不到文件并返回错误5002,文件名错误。

我还包含一个文件浏览器图片,显示该文件已存在。

你能帮我解释一下找不到文件的原因吗?

if (FileIsExist(TerminalInfoString(TERMINAL_DATA_PATH) + "\\templates\\reitron_trend_trading.tpl"))
     ChartApplyTemplate(0,TerminalInfoString(TERMINAL_DATA_PATH) + "\\templates\\reitron_trend_trading.tpl");
  else
  {
     int iErr = GetLastError(); 
     string sErrDesc = ErrorDescription(iErr);
     Print("Cannot open file - err " + IntegerToString(iErr) + " " + sErrDesc);   
     Print(TerminalInfoString(TERMINAL_DATA_PATH));
     Print(TerminalInfoString(TERMINAL_DATA_PATH) + "\\templates\\reitron_trend_trading.tpl");
   }

enter image description here

我终端的输出说明如下:

2018.03.07 15:59:30.628当我输出我在程序中搜索的路径时,Reitron_Scalping_Working_Model_2 EURUSD,M1:C:\ Users \ Jean \ AppData \ Roaming \ MetaQuotes \ Terminal \ BB190E062770E27C3E79391AB0D1A117 \ templates \ reitron_trend_trading.tpl

谢谢,

1 个答案:

答案 0 :(得分:1)

Panta Rhei,MQL4仍然在发展,所以要为未来的潜在变化做好准备

为什么 - 部分:

在最近的Build之前,所有MQL4指示的FileIO操作始终仅在受保护的目录位置内进行沙箱化,相对于此位置生根:
<~TerminalDIRECTORY~>/MQL4/Files ,绝不会。

如果代码是从StrategyTester工具运行的,则FileIO会以类似的方式运行到另一个位置: <~TerminalDIRECTORY~>/tester/Files ,绝不会。

简单地说,任何尝试在所述沙箱的“外部”执行任何FileIO操作都不会被执行以隔离潜在的安全原因。

方法部分:

所以,请将目标文件放在所述沙箱中的“内部”位置,这对MQL4-fileIO服务来说是可见的。那很简单。

<~TerminalDIRECTORY~>/MQL4/Files/aNewSubDirForApp/20180307/anythingElse/ 对于文件名的绝对路径部分是可以的,代码将表示与snadbox相关的路径规范,如:

int aFileHANDLE = FileOpen(  "aNewSubDirForApp/20180307/anythingElse/"
                            + aFileNAME,
                              FILE_READ
                              );`

到目前为止(2017-EoY)没有例外。

然而,MQL4仍然在发展,所以要为将来的潜在变化做好准备。