Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

This page was last modified 10:51, 27 June 2007.

关于ini文件的使用

From Forum Nokia Wiki

如果程序中需要配置文件(如保存进度,声音等)那可以使用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表明这个文件在程序运行时才生成,现在为空。前面用的是""。

 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtopicQUqfnTopicZseriesE5f60Q
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX
     
    
            
            RDF Facets:
            
            
                        qfnZuserE5ftagQSxiniX