3223|3

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

谁有好用的WritePrivateProfileString 函数代码? 可否借用下? [复制链接]

写INI文件的函数! 谢谢,

下面是GetPrivateProfileString的代码 我试了,很好用!
http://social.microsoft.com/Forums/zh-CN/windowsembeddedcezhchs/thread/f5ef41cc-3d8e-4bff-bec7-ef6394754d73

最新回复

非常感谢,这代码看着 眼熟,  等会再试试!   详情 回复 发表于 2010-3-8 15:20
点赞 关注

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
顶上去,继续...。。。。。。
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
//读写INI文件方法
BOOL CBaseWnd::WriteMyProfileString(const CString strSection, const CString strEntry, const CString strValue, const CString strIniPath)       
{
    if(strSection == L"" || strEntry == L"" || strValue == L"" || strIniPath == 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";
            LPTSTR lpCombine = strCombine.GetBuffer(0);
            IniFile.Write(lpCombine, strCombine.GetLength() * 2);
            IniFile.Close();
            return TRUE;
        }
        
        WCHAR *pBuf;
        pBuf = new WCHAR[IniFile.GetLength() / 2 + 1];
        if(pBuf == NULL)
        {
            IniFile.Close();
            return FALSE;
        }
        if(IniFile.Read(pBuf, IniFile.GetLength()) != IniFile.GetLength())
        {
            delete[] pBuf;
            IniFile.Close();
            return FALSE;
        }
        
        pBuf[IniFile.GetLength() / 2] = NULL;
        strCombine.GetBuffer(MAX_LEN);
        strCombine = pBuf;
        delete[] pBuf;
        
        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";
            
            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");
            
            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);
            
            LPTSTR lpCombine = strCombine.GetBuffer(0);
            IniFile.SetLength(0);
            IniFile.SeekToBegin();
            IniFile.Write(lpCombine, strCombine.GetLength() * 2);
            IniFile.Close();
            return TRUE;
        }
        
    }
    CATCH(CFileException, e)
    {
    }
    END_CATCH
        
        IniFile.Close();

    return FALSE;
}
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 
非常感谢,这代码看着 眼熟,  等会再试试!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表