使用 MQL4 创建文本文件

问题描述 投票:0回答:4

我正在尝试使用 MQL4 创建一个文本文件。没有成功。它就是行不通。一个非常简单的脚本:

    void OnStart() {
      string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
      string filename=terminal_data_path+"\\MQL4\\Files\\"+"teste2.txt";
      int filehandle = FileOpen(filename,FILE_WRITE|FILE_TXT);
      FileWriteString(filehandle,"teste");  
      FileClose(filehandle); 
   }

这会引发错误 5002。好的,该文件不存在。我认为脚本会创建文件。

所以,我决定在文件夹中用记事本创建一个空的“teste2.txt”。同样的错误。

有人可以帮助我吗?

谢谢

mql4 metatrader4 mql
4个回答
3
投票

该文件默认写入 .../MQL4/Files 中,因此只需编写该代码即可工作(它会创建一个名为 teste2.txt 的文件,并在 .../MQL4/Files 中写入 teste):

void OnStart()
{
  int filehandle = FileOpen("teste2.txt",FILE_WRITE|FILE_TXT);
  FileWriteString(filehandle,"teste");  
  FileClose(filehandle); 
}

当然,您需要检查 FileX 函数的返回(FileOpen、fileWrite、FileClose 等)


0
投票

如果您调用文件

string filename="A"+"\\B\\"+"teste2.txt";
,它将被写入
TerminalInfoString(TERMINAL_DATA_PATH)
\MQL4\Files\A\B\ 文件夹中。当然,文件名中不能使用禁止的符号,完整路径(C:\Users\User_NAME\AppData...)中的“:\”是禁止的


0
投票

首先,您需要检查是否有文件。

//+------------------------------------------------------------------+
//|                                                  FileIsExist.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
     string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
     string filename     = "teste2.txt";
     int fileHandle      ;    

     if(FileIsExist(filename,0))
       {
          Print("Specified File Has");
          fileHandle     =    FileOpen(filename , FILE_WRITE|FILE_TXT);
          FileWriteString(fileHandle,"teste");  
          FileClose(fileHandle); 
          Print("Write to Existing File Completed");

       }else
          {
               Print("File Not Available, Regenerating....." );
               fileHandle     =    FileOpen(filename , FILE_READ|FILE_WRITE|FILE_TXT);
               FileWriteString(fileHandle,"Writing to Newly Created File Completed - teste     \n");  
               FileClose(fileHandle); 
               Print("Writing to Newly Created File Completed");
          }

  }
//+------------------------------------------------------------------+

0
投票

我遇到了这个问题。您必须先检查该文件。如果没有出现,请先用

生成它

"fileHandle = FileOpen(文件名, FILE_READ|FILE_WRITE|FILE_TXT); FileWriteString(fileHandle,"写入新创建的文件已完成 - teste ”);
文件关闭(文件句柄);"

© www.soinside.com 2019 - 2024. All rights reserved.