请教FILE代码

 
请教一句代码


 handle=FileOpen(商品名称, FILE_CSV|FILE_READ|FILE_WRITE, ';');
         if(handle>0)
            {
             FileWrite(handle, close[0]);
             FileClose(handle);
            }
我的目的是打印到文件,但是我的TXT文本里总是只有一句话,是不是每打印一句就把原先的数据替换删掉了?
 
看你的代码是只有打印一行啊。循环都没有你想打印几行?
 
int filehandle1=FileOpen("filename.csv",FILE_CSV|FILE_READ|FILE_WRITE);
if(filehandle1!=INVALID_HANDLE)
{
   if(FileSeek(filehandle1,0,SEEK_END))
    {                       
       FileWrite(filehandle1,close[0]);
    }
   else
       Print("FileSeek error,",GetLastError());   
}
FileClose(filehandle1);
 

我用的是MT4平台,只能用MT4编。

循环不需要的吧,我是打印加载EA后的每一个CLOSE[0].不是以往K线的。我现在的问题是我里面只有一行,这一行在不断的替换,替换成最新的数据,我需要的是插入新数据,不是替换老数据。 

 
zbb:

我用的是MT4平台,只能用MT4编。

循环不需要的吧,我是打印加载EA后的每一个CLOSE[0].不是以往K线的。我现在的问题是我里面只有一行,这一行在不断的替换,替换成最新的数据,我需要的是插入新数据,不是替换老数据。 

一样的,在写入前将文件指针移到最后,每次从文件结尾开始写
 
zbb:

我用的是MT4平台,只能用MT4编。

循环不需要的吧,我是打印加载EA后的每一个CLOSE[0].不是以往K线的。我现在的问题是我里面只有一行,这一行在不断的替换,替换成最新的数据,我需要的是插入新数据,不是替换老数据。 

那你只需在退出的时候关闭文件句柄就行了,你这样的代码执行效率很低,不断的创建句柄,关闭句柄,你可以初始化时创建一次句柄就行了。
 
或者参考3楼luenbo兄的代码
open file to append - MQL4 forum
  • www.mql5.com
open file to append - MQL4 forum
 
428
jonssen 2014.07.07 16:11    CN
zbb:

我用的是MT4平台,只能用MT4编。

循环不需要的吧,我是打印加载EA后的每一个CLOSE[0].不是以往K线的。我现在的问题是我里面只有一行,这一行在不断的替换,替换成最新的数据,我需要的是插入新数据,不是替换老数据。 

那你只需在退出的时候关闭文件句柄就行了,你这样的代码执行效率很低,不断的创建句柄,关闭句柄,你可以初始化时创建一次句柄就行了。

 

请问如何做到你说的效率高的写法,谢谢指教。 

原因: