sdk教程05

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在软件中需要设置一些参数,而这些参数保存可以通过注册表或者写文件的方式,简单的方法就是写INI文件。

INI具体有一定的格式规范,可以非常简单的进行操作方法的封装。

在m8sdk中也提供了INI的读写API,这一篇将学习如何使用m8sdk的API进行INI的应用。

在m8的例子中没有对INI相关API的说明,在其提供的帮助文档中找到的(Meizu M8 PlatformAPI Documentation (CHS).chm),ReadWriteIni.h这个文件头即是。

写了好几篇文章后,不知道大家对.h文件是否有了解?我在最开始的学习中还是遇到了点麻烦,一直使用DELPHI开发都是使用类,而且Delphi中的代码单元都是.pas,而C/C++就不一样。

我们在看魅族提供的sdk中也发现了,所有提供的资源都是.h文件,.h文件即是头文件,简单的理解就是申明文件,所有的申明部分都可以放在.h,然后在具体的.cpp文件中实现即可,所以在代码头都会有#include "XXXX.h"这样的代码,就是引入申明,而且使用头文件有个好处就是申明与实现分开,只要将申明公布即可,实现的细节就可以隐藏起来了,而使用者也不用关心实现部分就可以调用具体的功能了。

就好像是个约定——接口。

回到主题INI,要使用sdk的Ini 相关的API,必须将ReadWriteIni.h添加到工程的头文件中,然后在需要使用的代码中#include "ReadWriteIni.h"即可。

在ReadWriteIni.h中对所有的函数都进行了中文说明:
1.//Ini文件的创建,Ini文件的字符编码采用Unicode little编码,即0xFF, 0xFE开头,
和txt一样
2.bool IniCreateFile(TCHAR *IniFileName);
3.
4.//判断某个段是否存在,其中, pAppName:段名, pFileName: .ini文件名。

存在返回true,
不存在返回false
5.bool IsExistApp(TCHAR *pAppName, TCHAR *pFileName);
6.
7.//往ini文件中加入一个字符串的值,其中, pAppName:段名, pKeyName:键名, pString:
键值, pFileName: .ini文件名
8.//当pKeyName == NULL时,会删除整个pAppName段,当pString == NULL时,会删除
pAppName段下的pKeyName键.
9.bool IniWriteString(TCHAR *pAppName, TCHAR *pKeyName, TCHAR *pString,
TCHAR *pFileName);
10.
11.//从ini文件中读取一个字符串值,其中,pAppName:段名, pKeyName:键名, pString:
读到的键值, pFileName: .ini文件名
12.//注音:**pString为指针的指针,在本函数中申请内存,反回给应用程序,应用程序在使用
完后,一定要free内存
13.bool IniReadString(TCHAR *pAppName, TCHAR *pKeyName, TCHAR **pString,
TCHAR *pFileName);
14.
15.//往ini文件中加入一个DWORD类型的值,其中, pAppName:段名, pKeyName:键名,
dwValue:键值, pFileName: .ini文件名
16.bool IniWriteInt(TCHAR *pAppName, TCHAR *pKeyName, DWORD dwValue, TCHAR
*pFileName);
17.
18.//从ini文件中读到一个DWORD类型的值,其中, pAppName:段名, pKeyName:键名,
*dwValue:读到的键值, pFileName: .ini文件名
19.bool IniReadInt(TCHAR *pAppName, TCHAR *pKeyName, DWORD *dwValue, TCHAR
*pFileName);
复制代码
我只举个例子来简单的说明下使用方法
1.//创建Ini文件
2.IniCreateFile(L"Program Files\\ClockData.ini");
3.//写
4.IniWriteString(L"ItemList", L"ItemName", L"M8", L"Program
Files\\ClockData.ini");
5.//读
6.TCHAR* tmp;
7.IniReadString(L"ItemList", "ItemName", &tmp, L"Program
Files\\ClockData.ini");
复制代码
就这么简单就行了,在使用中要注意一点,我在做实验时遇到这样一个问题,在PC上手工建立了一份INI文件,然后将文件传入到模拟器中,结果死都读不出来,也没找出具体的原因,不知道是否两个系统的文件格式不兼容?但在比较了使用M8SDK写的INI文件内容后,
发现在格式上是有些不同,比如:
1.这是我手工编辑的INI文件内容
2.[Header]
3.IsOpen=1
4.RunPos=0
5.
6.而用M8SDK生成同样内容的INI去在每个键名前都增加了两个空格
7.[Header]
8. IsOpen=1
9. RunPos=0
复制代码
具体是M8SDK固有格式呢?还是Wince的格式不是很清楚。

而且我尝试过将在PC中手工建的INI内容改成后者的格式还是不能读出,于是就觉得是两个系统存在文件格式差别。

后来才反应过来,这是因为在wince中是使用Uniocde编码的,而在windowsxp中建的文件是ansi编码,所以大家要注意啦。

相关文档
最新文档