cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 3876|回复: 5

[fx-9860/9750] 求助,关于9860 SDK中的写文件函数。

[复制链接]
发表于 2014-2-17 21:42:58 | 显示全部楼层 |阅读模式
本帖最后由 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[32];


        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覆盖掉。


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




发表于 2014-2-19 13:15:23 | 显示全部楼层
先删除原来的文件,再重建。Storage Memory是只读的。
 楼主| 发表于 2014-2-19 14:17:43 | 显示全部楼层
我上面写的是crd0,不是fls0
事实上你说对了,无论Sd卡还是Storage Memory,都必须先擦除再写。
而且在Storage Memory上,还无法用Bfile_CreateFile创建新文件。
我是9750刷的9860,没有sd卡,有什么办法能让程序把数据保存起来么?
发表于 2014-2-21 13:40:38 | 显示全部楼层
bingkai 发表于 2014-2-19 14:17
我上面写的是crd0,不是fls0
事实上你说对了,无论Sd卡还是Storage Memory,都必须先擦除再写。
而且在St ...

存在Storage Memory里面。
发表于 2014-2-21 20:06:14 | 显示全部楼层
ExAcler 发表于 2014-2-21 19:05
Sto里面写文件,不过个人认为在Main Mem里面保存会更方便一些

是的。不过总感觉在Main里面不是很安全……
 楼主| 发表于 2014-2-24 23:32:13 | 显示全部楼层
我测试了一下:
SD下:可以创建文件,可以追加写入,不可以覆盖写入
sto下:创建,追加,覆盖都不行,在计算器上根本就不可操作。这块闪存只能在PC端用fa124把内容刷进去。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-12-22 18:28 , Processed in 0.045399 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表