bingkai 发表于 2014-2-17 21:42:58

求助,关于9860 SDK中的写文件函数。

本帖最后由 bingkai 于 2014-2-17 21:48 编辑


请问,9860SDK中,Bfile_OpenFile只能追加打开文件么?我想往一个文件里写入一些数据,每次都写在文件末尾,而不能直接覆盖写入。

比如这个:

FONTCHARACTER * CharToFont(const char *cFileName,FONTCHARACTER *fFileName){
      int i,len = strlen(cFileName);
      for(i=0; i<len ;++i)
                fFileName = cFileName;
      fFileName=0;
      return fFileName;
}


int AddIn_main(int isAppli, unsigned short OptionNum)
{
    unsigned int key;
      int handle,i=20;
      char c = 0x42;
      FONTCHARACTER file_name;


      CharToFont("\\\\crd0\\test.txt",file_name);

      handle = Bfile_OpenFile(file_name,_OPENMODE_WRITE);

      if (handle <0) {
            locate (1,1);
            Print("file open error!");
            GetKey(&key);
      }

      while(i>0){
    Bfile_SeekFile (handle,0);      //此句没有用??
    Bfile_WriteFile (handle,&c,sizeof(c));
      i--;
      }         
         locate (1,1);
      Print("OK!");
      GetKey(&key);
    return 1;
}


创建一个文本文件test.txt,里面写若干个字符A,这段程序运行完会在末尾增加20个B,而不是将A覆盖掉。


为啥啊??怎么才能覆盖写入?




Mike 发表于 2014-2-19 13:15:23

先删除原来的文件,再重建。Storage Memory是只读的。

bingkai 发表于 2014-2-19 14:17:43

我上面写的是crd0,不是fls0
事实上你说对了,无论Sd卡还是Storage Memory,都必须先擦除再写。
而且在Storage Memory上,还无法用Bfile_CreateFile创建新文件。
我是9750刷的9860,没有sd卡,有什么办法能让程序把数据保存起来么?

Mike 发表于 2014-2-21 13:40:38

bingkai 发表于 2014-2-19 14:17 static/image/common/back.gif
我上面写的是crd0,不是fls0
事实上你说对了,无论Sd卡还是Storage Memory,都必须先擦除再写。
而且在St ...

存在Storage Memory里面。

Mike 发表于 2014-2-21 20:06:14

ExAcler 发表于 2014-2-21 19:05 static/image/common/back.gif
Sto里面写文件,不过个人认为在Main Mem里面保存会更方便一些

是的。不过总感觉在Main里面不是很安全……

bingkai 发表于 2014-2-24 23:32:13

我测试了一下:
SD下:可以创建文件,可以追加写入,不可以覆盖写入
sto下:创建,追加,覆盖都不行,在计算器上根本就不可操作。这块闪存只能在PC端用fa124把内容刷进去。
页: [1]
查看完整版本: 求助,关于9860 SDK中的写文件函数。