现在的位置: 首页 > 综合 > 正文

在 WinCe 平台读写 ini 文件

2012年10月23日 ⁄ 综合 ⁄ 共 11955字 ⁄ 字号 评论关闭
      在上篇文章开发 windows mobile 上的今日插件时,我发现 wince 平台上不支持例如 GetPrivateProfileString 等相关 API 函数。在网络上我并没有找到令我满意的相应代码,因此我手工自己写了相应的方法。命名规则是,在 PC API 函数的名称前面加上 “Ce” 前缀,这是为了在 PC 平台上调试和使用时,不和系统的 API 函数发生冲突。值得注意的是,在写 CeWritePrivateProfileString 方法时,如果改写后的 ini 文件应该比改写前的文件小,文件尾部将会是一些不确定内容(来自于原来文件)。在 PC 上我们可以通过 <io.h> 中的 _chsize 函数重新设置文件大小,但是很遗憾的是,这些底层的文件操作函数在 wince 平台上依然不被支持,但是幸运的是,可以使用 coredll.dll 中提供的 SetEndOfFile 函数去完成相同功能(感谢88上的 kghost 的提示)。
  另外我额外提供了一个函数:CeGetPrivateProfileKeyNames,用于读取某个 section 的所有 key 名称。
  当然,如果是在 PC 平台,我们就没有必要使用这里我所提供的代码,因为有系统 API 可以调用。
  需要注意的是,我提供的代码和 PC 端 API 相比,基本功能,参数意义完全相同,但具有以下一些额外要求:
  (1)大小写敏感。(当然也可以通过修改代码,令其大小写不敏感)
  (2)每一行,section, key, value, “=” 的前后不允许有空格。
  (3)注释行用英文分号“;"起始。允许存在空行。
  (4)每一行的字符数不能超过 260 字符(取决于代码中的宏定义)。
  (5)函数代码同时适用 unicode 和多字节字符串 的环境。
  (6)由于采用标准文件操作函数,因此 CeGetPrivateProfileSectionNames 函数并不保证原子性。(这一点和 PC API 不同)

  下面是相关函数代码:
  (a) IniFile.h

IniFile.h

  (b) IniFile.cpp

IniFile.cpp

抱歉!评论已关闭.