下载MetaTrader 5
要添加评论,请登录注册
通过市场出售您的应用程序。这是安全的
Jinsong Zhang
14631
Jinsong Zhang 2009.11.23 15:14 

MT可以创建和读取csv文件,但如何修改??

int start()
{

   int songrecord;
   songrecord=FileOpen("_record.csv", FILE_CSV|FILE_WRITE|FILE_READ,',');
   if(songrecord<=0)return; 

   int FA_id=1114444;
   int myFA;
   FileWrite(songrecord,"1114443",0);
   FileWrite(songrecord,"1114444",0);
   FileWrite(songrecord,"1114445",0);
   FileSeek(songrecord, 0, SEEK_SET);
   while(!FileIsEnding(songrecord))
   {

      myFA=StrToInteger(FileReadString(songrecord));

      if(myFA==FA_id){
         int pos=FileTell(songrecord); 
         Alert(pos);
         FileSeek(songrecord, pos-2, SEEK_SET);
         FileWrite(songrecord,6.6); 
         Alert(GetLastError() );
         break;
      } 
   } 
   FileClose(songrecord);
}

期望输出如:

1114443 0
1114444 6.6
1114445 0

但实际输出为:

1114443 0
1114444 6.6
4445 0

有朋友能解决吗?

okwh
1629
okwh 2009.11.24 05:03  

因为 FileWrite  是替换写入, 所以 111 被 6.6替换了!!

解决办法就是 再写一个 文件, 实现插入和部分替换的效果。

Jinsong Zhang
14631
Jinsong Zhang 2009.11.24 10:32  
呵呵,有几千条记录呢 :o)) 我找到解决办法了~~
xfxyldj
172
xfxyldj 2009.11.25 21:54  
song_song 写道 >>
呵呵,有几千条记录呢 :o)) 我找到解决办法了~~

方便分享下解决方法不?

Jinsong Zhang
14631
Jinsong Zhang 2009.11.26 05:23  

要保证新写入的字数与原来字数一样,比如用"6.6"取代"000"

ds
5
ds 2010.12.23 18:58  

我按照你的代码输出和你的不一样:

1114443,0

1114444,06.6
4445,0


但是如果把 "6.6" 替换成 "000" 那个

FileSeek(songrecord, pos-2, SEEK_SET);

这段就要改成pos-5 而不是pos-6。才能有正确输出。
不知道这3个字节怎么会变成要移动5个字节了。
/
要添加评论,请登录注册