大隐于市

用艺术的眼光看待编程!

孙东风ID:dongfengsun
131329次访问,排名611好友5人,关注者31
03年从西安交通大学毕业后一直从事移动平台的开发工作。崇尚一切自由的东西,热爱交流。目前专注于手机二维码技术研究并负责技术管理工作,希望能和同行认识、交流、共享。
dongfengsun的文章
原创 73 篇
翻译 2 篇
转载 32 篇
评论 151 篇
孙东风的公告
原创文章转载请注明出处
QQ :372590353
MSN:sundongfeng1227@hotmail.com
  我的EMAIL



最近评论
j7fs:我也正在学习这方面的知识,希望能得到你的指点,
我的邮箱是:j7fs_cn@163.com,望能得到一份源码以便学习之用,谢谢:)
gjprgj:能否列几本书看看?新手,多指教:)
gjprgj:能不能给列几本书看看啊?新手,多指教。
gjprgj:能不能给列几本书看看啊?新手,多指教。
fig_o:就下载了某大师的VC++视频资料
请问在哪里下载。地址给一个
文章分类
收藏
    相册
    存档
    订阅我的博客
    XML聚合  FeedSky

    转载 Symbian中ini文件的使用收藏

    新一篇: 为Symbian程序中的图片增加半透明效果 | 旧一篇: Symbian中操作ini文件

    原文地址:http://www.goodod.com/html/68/bencandy_9415.htm

    如果程序中需要配置文件(如保存进度,声音等)那可以使用ini文件来处理,同MFC一样也有专门处理配置文件的API,这就是OpenIniFileLC(RFs& aFs)。

    首要的一条,你的程度要支持ini文件,那就要重载这个CEikApplication的成员函数,否则程序执行起来会报错,而重载时只要如下语句即可:
    CDictionaryStore* CMyApp::OpenIniFileLC(RFs& aFs) const

        return CEikApplication::OpenIniFileLC(aFs);
     }

    这样的话,程序可以在你启动时自动的创建一个ini——如果检测到没有的情况下。而这个ini一般是创建在C:\System\App\MyApp目录下的,注意即使用户选择安装在E盘,那还是会把ini安装在系统盘上,SDK说明这个默认盘符是放在KIniFileDrive里,但我还没有找到办法如何去修改它,如果你知道了告诉我一声哦:)

    一般配制文件要供全局使用,可能要跨越多个view,因此我们把它的操作及数据定义在UI级别,在MyAppUi的ConstructL()函数中有如下语句:

    //处理基本的数据
    delete iMyConfig;
         iMyConfig = CMyConfigData::NewL();

    CDictionaryStore* store = Application()->OpenIniFileLC(iCoeEnv->FsSession());
    if (store->IsPresentL(KUidKey)) 

    LoadIniFile(store);
    } 
    else 
    { 
    iMyConfig->SetDefault();
    SaveIniFile(store);

    CleanupStack::PopAndDestroy();
    //--结束处理

    void CMyAppUi::SaveIniFile(CDictionaryStore* aStore)

    RDictionaryWriteStream out;
    out.AssignLC(*aStore, KUidKey);
    out << *iMyConfig;
    out.CommitL();
    CleanupStack::PopAndDestroy();
    aStore->CommitL();



    void CAknExSettingListAppUi::LoadIniFile(CDictionaryStore* aStore)

    RDictionaryReadStream in;
    in.OpenLC(*aStore, KUidKey);
    in >> *iMyConfig;
    CleanupStack::PopAndDestroy();


    当然具体的CMyConfigData里还要有一些相应的导入导出处理,这样才完美:)

    有时候我们还需要在程序中处理一下配置的保存,那我们可以使用如下代码(在view中):
    CDictionaryStore *IniFile = AppUi()->Application()->OpenIniFileLC(CCoeEnv::Static()->FsSession());

    RDictionaryWriteStream WriteStream;
    WriteStream.AssignLC( *IniFile, KUidKey );
    WriteStream << *iData;
    WriteStream.CommitL();
    CleanupStack::PopAndDestroy();

    IniFile->CommitL();
    CleanupStack::PopAndDestroy();
    把它放在一个函数中即可:)

    最后要说明的是,如果不在pkg里有明确说明,那保存在系统盘上的ini在程序被删除后是不会丢失的,这就造成了垃圾文件,我们只需要在pkg中加入下面一句就可以彻底删除这些:
    ; Remove INI file when uninstalling the app.
    ""-"C:\system\apps\MyApp\MyApp.ini",FN
    FN表明这个文件在程序运行时才生成,现在为空。前面用的是“”。 

     

    发表于 @ 2006年12月19日 23:38:00|评论(loading...)|编辑

    新一篇: 为Symbian程序中的图片增加半透明效果 | 旧一篇: Symbian中操作ini文件

    评论

    #windcao 发表于2007-04-11 17:13:57  IP: 218.249.118.*
    KUidKey是啥?随便定义吗?
    #dongfengsun 发表于2007-04-12 13:32:33  IP: 58.247.158.*
    KUidKey 是你定义的一个流ID,流字典用它来和相应的流进行关联,因为如果你进行多文件操作的话,一个流对应一个ID!
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 孙东风