我正在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);
答案 0 :(得分:1)
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);