FileOpen()函数使用时候不稳定

 

请教各位大神一个问题,学习MQL4几个月,最近接触FILE类的函数,


int h;


int OnInit()

  {

   h=FileOpen("te3.csv",FILE_READ|FILE_WRITE|FILE_CSV|FILE_SHARE_READ,',',CP_ACP);

   Print(GetLastError());

   return(INIT_SUCCEEDED);

  }


void OnDeinit(const int reason)

  {

   

  }

void OnTick()

  {

    int i=1,zl=55,a;

    if(h!=INVALID_HANDLE)

    {

    a=FileWrite(h,zl);

    }

    Print("h="+h);……


这个程序,经常没有新建CSV文件,或者CSV文件建立了,里面写入数据不全,是因为我把Fileopen()函数放到Oninit函数里面,还是其他什么原因?请教一下,谢谢

 
Qfeng:

请教各位大神一个问题,学习MQL4几个月,最近接触FILE类的函数,


int h;


int OnInit()

  {

   h=FileOpen("te3.csv",FILE_READ|FILE_WRITE|FILE_CSV|FILE_SHARE_READ,',',CP_ACP);

   Print(GetLastError());

   return(INIT_SUCCEEDED);

  }


void OnDeinit(const int reason)

  {

   

  }

void OnTick()

  {

    int i=1,zl=55,a;

    if(h!=INVALID_HANDLE)

    {

    a=FileWrite(h,zl);

    }

    Print("h="+h);……


这个程序,经常没有新建CSV文件,或者CSV文件建立了,里面写入数据不全,是因为我把Fileopen()函数放到Oninit函数里面,还是其他什么原因?请教一下,谢谢

函数一般都不会不稳定的说法,是自己的问题:

这么简单的问题你都要来让大神们费心,我看就不用大神出面了, 这里是交易界的神坛,所以的大神们都很忙的 。我替你解决吧。把这个 FILE_SHARE_WRITE加到你上面的FileOpen();再把 FileFlush(h)放到 a=FileWrite(h,zl) 下面。修复后的代码如下:

int h;



int OnInit()

  {

   h=FileOpen("te3.csv",FILE_READ|FILE_WRITE|FILE_CSV|FILE_SHARE_READ|FILE_SHARE_WRITE,',',CP_ACP);

   Print(GetLastError());

   return(INIT_SUCCEEDED);

  }



void OnDeinit(const int reason)

  {



  }

void OnTick()

  {

   int i=1,zl=58,a;

   if(h!=INVALID_HANDLE)

     {

      a=FileWrite(h,zl);
      
      FileFlush(h);

     }

   Print("h="+h);
  }
原因: