BUG:theApp.GetSectionString()不返回默认值

时间:2015-11-19 15:34:58

标签: c++ mfc

我使用theApp.GetSectionString(lpszSubSection, lpszEntry, lpszDefault)从注册表中读取值。

问题是如果注册表中缺少目标条目,它不会返回默认值。

CString str = GetSectionString(_T("Settings"),_T("Gugus"),_T("default 123"));

我总是检查str,如果它是一个空字符串,那么它会手动将默认值设置为str

这是GetSectionString()的错误或默认行为吗?

    CString str = theApp.GetSectionString (_T("Xenax"),_T("MechanicalLimit X-,X+,-Y-,Y+"), "-20999, 4799, 2699, -9999" );
    if (str.empty())  // <- Needed, :(( 
    {
        str = "-20999, 4799, 2699, -9999"   ;  
    }

1 个答案:

答案 0 :(得分:0)

我认为应该阅读您的代码(应使用IsEmpty()代替empty()):

CString str = theApp.GetSectionString (_T("Xenax"),_T("MechanicalLimit X-,X+,-Y-,Y+"), _T("-20999, 4799, 2699, -9999") );
if (str.IsEmpty())  // <- Needed, :(( 
{
    str = _T("-20999, 4799, 2699, -9999");  
}

CWinAppEx::GetSectionString()中存在错误。此错误已在VS 2012中修复。更多信息位于:http://blogs.msdn.com/b/vcblog/archive/2012/06/14/10320171.aspx