我使用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" ;
}
答案 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