我正在使用 MQL4 进行编码来读取文件。当我定义文件名并将文件放在指定位置时,它显示错误 5004。但是当我定义路径时,它显示 5002。我去过 MetaTrader 论坛,发现了这个 ( https://www.mql5.com/en/forum/7049 ) 线程。但还是没有解决。我在这里错过了什么吗?
string filename = TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL4\\Files\\output.txt";
Print(filename);
ResetLastError();
int file_handle=FileOpen("out.txt", FILE_READ|FILE_TXT);
//int file_handle=FileOpen(filename, FILE_TXT|FILE_READ);
//Print(file_handle);
string up, down, sideway;
up = down = sideway = 0;
if (file_handle!=INVALID_HANDLE){
Print("read");
up=FileReadString(file_handle);
down = FileReadString(file_handle);
sideway = FileReadString(file_handle);
} else{
Print("file open error: ", GetLastError());
} FileClose(file_handle);
最佳答案
int file_handle=FileOpen("out.txt", FILE_READ|FILE_TXT);
表示您的文件夹中有文件“out.txt”,例如C:\Users\User1\AppData\Roaming\MetaQuotes\Terminal\999999DEA9630EA94D0715D755974F1D\MQL4\Files\out.txt。如果您在测试器中尝试,路径是
C:\Users\User1\AppData\Roaming\MetaQuotes\Terminal\999999DEA9630EA94D0715D755974F1D\tester\files\out.txt 确保您拥有用于解决 5002
错误的文件。
可能会发生这样的情况:您成功打开了一次文件,但在编写代码时未能关闭。现在您无法打开它。一种方法是关闭 MT4(它将关闭所有打开的文件),另一种方法是以 SHARE 模式打开文件。
int file_handle=FileOpen("out.txt", FILE_READ|FILE_SHARE_READ|FILE_TXT);
关于尝试读取文件时出现 MQL4 错误 5004 和 5002,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52492544/