////////////////////////////////////////////////////////////////////////////////////// ///// 说 明 //// // 1. 如果下列函数执行时返回错误,用GetLastError()得到错误信息 // 2. 读和写都按标准的Ini文件格式 // 3. 在CATCH{}宏里可以得到异常信息 #define MAX_LEN 1000 ///用于CString,使用CString类前最好估算整个操作过程中可能出现的最大 ///字符长度,用GetBuffer(MAX_LEN)来创建缓冲区。这将避免频繁创建、删除 ///缓冲区,提高了效率,也避免了内存碎片。 CString strIniPath = L"//hard disk//user.ini"; ///全局变量,预先设置一个文件路径。 ///文件路径没有盘符,如C:/ 、D:/ 。 ///必须为绝对路径,CE下没相对路径概念。 BOOL WriteProfileString(const CString strSection, const CString strEntry, const CString strValue) { ////先判断所有参数是否为空 if(strSection == L"" || strEntry == L"" || strValue == L"") { return FALSE; } CFile IniFile; CString strCombine; TRY { ////打开文件 if(! IniFile.Open(strIniPath, CFile::modeReadWrite|CFile::modeCreate|CFile::modeNoTruncate)) { return FALSE; } ///判断文件是否为空,为空则直接写数据,就不必先把文件内容读出来。 if(IniFile.GetLength() == 0) { strCombine = L"[" + strSection + L"]" + L"/r/n" + strEntry + L"=" + strValue + L"/r/n"; ///得到strCombine包含的缓冲区首地址(方法有两种) LPTSTR lpCombine = strCombine.GetBuffer(0); IniFile.Write(lpCombine, strCombine.GetLength() * 2); IniFile.Close(); return TRUE; } ///读出文件所有数据到缓冲区 WCHAR *pBuf; pBuf = new WCHAR[IniFile.GetLength() / 2 + 1]; ///文件内容为UNICODE,所以文件长度一定是2的倍数 if(pBuf == NULL) { IniFile.Close(); return FALSE; } if(IniFile.Read(pBuf, IniFile.GetLength()) != IniFile.GetLength()) { delete[] pBuf; IniFile.Close(); return FALSE; } ///把缓冲区地址赋给CString对象,为了使用CString包含的函数。 ///一般Ini文件比较小,所以从缓冲区到CString的复制过程用时很短、耗费资源也很少 pBuf[IniFile.GetLength() / 2] = NULL; strCombine.GetBuffer(MAX_LEN); ///先创建大的缓冲区 strCombine = pBuf; delete[] pBuf; //////开始查找,看section和entry是否已经存在 int iIndex1, iIndex2, iIndex3, iIndexT; iIndex1 = strCombine.Find(L"[" + strSection + L"]/r/n"); if(iIndex1 == -1) ///没找到 { strCombine += L"[" + strSection + L"]" + L"/r/n" + strEntry + L"=" + strValue + L"/r/n"; ///得到strCombine包含的缓冲区首地址 LPTSTR lpCombine = strCombine.GetBuffer(0); IniFile.SetLength(0); ///删除原来数据 IniFile.SeekToBegin(); IniFile.Write(lpCombine, strCombine.GetLength() * 2); IniFile.Close(); return TRUE; } iIndexT = iIndex1 + 4 + strSection.GetLength(); iIndex2 = strCombine.Find(strEntry + L"=", iIndexT); if(iIndex2 == -1) ///没找到 { strCombine.Insert(iIndexT, strEntry + L"=" + strValue + L"/r/n"); ///得到strCombine包含的缓冲区首地址 LPTSTR lpCombine = strCombine.GetBuffer(0); IniFile.SetLength(0); IniFile.SeekToBegin(); IniFile.Write(lpCombine, strCombine.GetLength() * 2); IniFile.Close(); return TRUE; } else { iIndex3 = strCombine.Find(L"/r/n", iIndex2 + 1); if(iIndex3 == -1) { IniFile.Close(); return FALSE; } iIndexT = iIndex2 + 1 + strEntry.GetLength(); strCombine.Delete(iIndexT, iIndex3 - iIndexT); strCombine.Insert(iIndexT, strValue); ///得到strCombine包含的缓冲区首地址 LPTSTR lpCombine = strCombine.GetBuffer(0); IniFile.SetLength(0); IniFile.SeekToBegin(); IniFile.Write(lpCombine, strCombine.GetLength() * 2); IniFile.Close(); return TRUE; } } ///end TRY CATCH(CFileException, e) { /* ////用于调试,得到出错信息 CString strT; switch(e->m_cause) { case CFileException::generic: case CFileException::badPath: case CFileException::accessDenied: case CFileException::hardIO: case CFileException::diskFull: ............... default: } */ } END_CATCH ///结束调试宏 IniFile.Close(); return FALSE; } CString GetProfileString(const CString strSection, const CString strEntry, const CString strDefault) { ////先判断前两个参数是否为空 if(strSection == L"" || strEntry == L"") { return strDefault; ///不成功则返回默认值 } CFile IniFile; CString strCombine; TRY { ////打开文件 if(! IniFile.Open(strIniPath, CFile::modeRead)) { return strDefault; } ///判断文件是否为空 if(IniFile.GetLength() == 0) { IniFile.Close(); return strDefault; } ///读出文件所有数据到缓冲区 WCHAR *pBuf; pBuf = new WCHAR[IniFile.GetLength() / 2 + 1]; if(pBuf == NULL) { IniFile.Close(); return strDefault; } if(IniFile.Read(pBuf, IniFile.GetLength()) != IniFile.GetLength()) { delete[] pBuf; IniFile.Close(); return strDefault; } pBuf[IniFile.GetLength() / 2] = NULL; strCombine.GetBuffer(MAX_LEN); ///先创建大的缓冲区 strCombine = pBuf; delete[] pBuf; //////开始查找,看section和entry是否已经存在 int iIndex1, iIndex2, iIndex3, iIndexT; iIndex1 = strCombine.Find(L"[" + strSection + L"]/r/n"); if(iIndex1 == -1) ///没找到 { IniFile.Close(); return strDefault; } iIndexT = iIndex1 + 4 + strSection.GetLength(); iIndex2 = strCombine.Find(strEntry + L"=", iIndexT); if(iIndex2 == -1) ///没找到 { IniFile.Close(); return strDefault; } else { iIndex3 = strCombine.Find(L"/r/n", iIndex2 + 1); if(iIndex3 == -1) { IniFile.Close(); return strDefault; } iIndexT = iIndex2 + 1 + strEntry.GetLength(); IniFile.Close(); return strCombine.Mid(iIndexT, iIndex3 - iIndexT); } } CATCH(CFileException, e) { } END_CATCH ///结束调试宏 IniFile.Close(); return strDefault; } BOOL WriteProfileInt(const CString strSection, const CString strEntry, const int iValue) { ////代码同WriteProfileString相似。 ////只需将int iValue转成CString strValue ////使用函数:wchar_t * _itow( int value, wchar_t *string, int radix ); return TRUE; } int GetProfileInt(const CString strSection, const CString strEntry, const int iDefault) { ////代码同GetProfileString相似。 ////只需将得到的CString类型转换成int型 ////使用函数:int _wtoi( const wchar_t *string ); return iDefault; }
您还没有登录,请您登录后再发表评论
wince下读写ini文件,wince下读写ini文件,wince下读写ini文件,
WINCE下读写INI配置文件,支持ANSI及UNICODE编码。C语言实现,高效简洁,调用接口及实现效果与系统API近乎一致。
wince下mfc编程,读写ini文件信息
http://download.csdn.net/source/2315900 更完善的版本, 现在这个就别下了 - -
在wince下,系统没有提供对ini配置文件的解析API,在网上很多ini解析类无法克服一个问题,就是每更新一次,配置文件顺序就会发生改变,这个C++的类克服了这个难题。
easyconfig(.net读取ini文件开源项目,支持windows和wince) 可以读取如下格式的ini文件: [Video] Fullscreen = true Width = 1280 Height = 720 ;中华 [Level1] NumberOfEnemies=2000 Lives = 10 Timer = 999 ...
采用Platform Builder进行编程,可以显示JPEG图像、并读取INI文件。在嵌入式定位导航系统中应用。
//打开相应的ini文件 if (!iniParse.Open(TEXT("\\NandFlash\\test1\\xjgtest.ini"))) MessageBox(NULL, L"Open ini file failed.", L"", MB_OK); TSTRING strValue ; int iValue = 0; //MessageBox(NULL...
1.本程序文档参考benkaoya提供开源代码编写。 2.封装benkaoya代码中提供的函数成为CIniWR类实现功能功能 3.实现部分参考DEMO 4.修正在VS2005下的部分错误。 主要在GetString函数中VS2005中的严格性出错W_CHAR *问题...
WINCE系统下对FTP服务器操作,包含文件的上传与下载,INI文件的读写操作,都已封装成DLL,可直接添加到工程中使用,附工程。
该模块可以用在程序启动前读Ini配置文件,用法非常简单,不用去写复杂的代码。直接使用IniWR.c和IniWR.h两个文件就可以了,IniWR包含注释。使用方便,几秒就可以上手了。而且稳定
window ce.net ini文件读写,纯c代码.rar
在WINDOWS CE下利用eVC4.0实现对Unicode型的INI格式文件的创建、添加、修改和读取操作,函数简洁明朗,使用非常方便!
所有读取操作都在 Open 时完成, 成功后所有读写操作都在内存中完成, 直到调用 Close 才写入文件, 效率应该是有保证的. 操作失败时, 可以调用 GetLastErr 来获得错误信息. ------------------------------ 华丽的...
WINCE 移动平台,利用EVC读写INI文件
自己写的一个 INI 读写类,全部使用 C++ 标准库完成,完全支持 UNICODE。UNICODE 和 非UNICODE 工程都可以使用,无需更改任何代码,无需 MFC 支持。XP,WINCE上测试通过。读写速度快,尤其在WINCE上 我晕,我刚发现...
简介:CETool是一个WinCE的辅助程序,使用C语言和Windows API编写,作了一些特殊处理以同时支持WinCE5和WinCE6,主要实现shell中的功能,提供的各种操作涉及到文件系统、窗口管理、进程管理和流程控制几个方面,通过...
用于在wince环境下实现对ini配置文件的读写,与pc下略有差别,会引入15个警告,不影响使用。 CeGetPrivateProfileString CeGetPrivateProfileInt CeGetPrivateProfileSection CeGetPrivateProfileSectionNames ...
一个跨平台库,提供了一个简单的API来读取和写入ini风格的配置文件。它支持ASCII、MBCS和Unicode格式的数据文件。它被明确设计为可移植到任何平台,并已在Windows, WinCE和Linux上进行了测试。使用MIT许可证作为开源...
相关推荐
wince下读写ini文件,wince下读写ini文件,wince下读写ini文件,
WINCE下读写INI配置文件,支持ANSI及UNICODE编码。C语言实现,高效简洁,调用接口及实现效果与系统API近乎一致。
wince下mfc编程,读写ini文件信息
http://download.csdn.net/source/2315900 更完善的版本, 现在这个就别下了 - -
在wince下,系统没有提供对ini配置文件的解析API,在网上很多ini解析类无法克服一个问题,就是每更新一次,配置文件顺序就会发生改变,这个C++的类克服了这个难题。
easyconfig(.net读取ini文件开源项目,支持windows和wince) 可以读取如下格式的ini文件: [Video] Fullscreen = true Width = 1280 Height = 720 ;中华 [Level1] NumberOfEnemies=2000 Lives = 10 Timer = 999 ...
采用Platform Builder进行编程,可以显示JPEG图像、并读取INI文件。在嵌入式定位导航系统中应用。
//打开相应的ini文件 if (!iniParse.Open(TEXT("\\NandFlash\\test1\\xjgtest.ini"))) MessageBox(NULL, L"Open ini file failed.", L"", MB_OK); TSTRING strValue ; int iValue = 0; //MessageBox(NULL...
1.本程序文档参考benkaoya提供开源代码编写。 2.封装benkaoya代码中提供的函数成为CIniWR类实现功能功能 3.实现部分参考DEMO 4.修正在VS2005下的部分错误。 主要在GetString函数中VS2005中的严格性出错W_CHAR *问题...
WINCE系统下对FTP服务器操作,包含文件的上传与下载,INI文件的读写操作,都已封装成DLL,可直接添加到工程中使用,附工程。
该模块可以用在程序启动前读Ini配置文件,用法非常简单,不用去写复杂的代码。直接使用IniWR.c和IniWR.h两个文件就可以了,IniWR包含注释。使用方便,几秒就可以上手了。而且稳定
window ce.net ini文件读写,纯c代码.rar
在WINDOWS CE下利用eVC4.0实现对Unicode型的INI格式文件的创建、添加、修改和读取操作,函数简洁明朗,使用非常方便!
所有读取操作都在 Open 时完成, 成功后所有读写操作都在内存中完成, 直到调用 Close 才写入文件, 效率应该是有保证的. 操作失败时, 可以调用 GetLastErr 来获得错误信息. ------------------------------ 华丽的...
WINCE 移动平台,利用EVC读写INI文件
自己写的一个 INI 读写类,全部使用 C++ 标准库完成,完全支持 UNICODE。UNICODE 和 非UNICODE 工程都可以使用,无需更改任何代码,无需 MFC 支持。XP,WINCE上测试通过。读写速度快,尤其在WINCE上 我晕,我刚发现...
简介:CETool是一个WinCE的辅助程序,使用C语言和Windows API编写,作了一些特殊处理以同时支持WinCE5和WinCE6,主要实现shell中的功能,提供的各种操作涉及到文件系统、窗口管理、进程管理和流程控制几个方面,通过...
用于在wince环境下实现对ini配置文件的读写,与pc下略有差别,会引入15个警告,不影响使用。 CeGetPrivateProfileString CeGetPrivateProfileInt CeGetPrivateProfileSection CeGetPrivateProfileSectionNames ...
一个跨平台库,提供了一个简单的API来读取和写入ini风格的配置文件。它支持ASCII、MBCS和Unicode格式的数据文件。它被明确设计为可移植到任何平台,并已在Windows, WinCE和Linux上进行了测试。使用MIT许可证作为开源...
简介:CETool是一个WinCE的辅助程序,使用C语言和Windows API编写,作了一些特殊处理以同时支持WinCE5和WinCE6,主要实现shell中的功能,提供的各种操作涉及到文件系统、窗口管理、进程管理和流程控制几个方面,通过...