WindowsXP-SP1/enduser/troubleshoot/tshoot/iniread.cpp
2020-09-30 16:53:49 +02:00

78 lines
1.8 KiB
C++

// MODULE: INIREAD.CPP
//
// PURPOSE: INI file reading classes
//
// COMPANY: Saltmine Creative, Inc. (206)-284-7511 support@saltmine.com
//
// AUTHOR: Oleg Kalosha
//
// ORIGINAL DATE: 7-29-98
//
// NOTES:
// 1. As of 1/99, needn't account for CHM file:
//
// Version Date By Comments
//--------------------------------------------------------------------
// V3.0 08-04-98 OK
//
#include "stdafx.h"
#include "iniread.h"
#include "event.h"
#include "CharConv.h"
////////////////////////////////////////////////////////////////////////////////////
// CINIReader
////////////////////////////////////////////////////////////////////////////////////
CINIReader::CINIReader(CPhysicalFileReader * pPhysicalFileReader, LPCTSTR section)
: CTextFileReader(pPhysicalFileReader),
m_strSection(section)
{
}
CINIReader::~CINIReader()
{
}
void CINIReader::Parse()
{
CString str;
long save_pos = 0;
CString section_with_brackets = CString(_T("[")) + m_strSection + _T("]");
save_pos = GetPos();
if (Find(section_with_brackets))
{ // we have found section
m_arrLines.clear();
NextLine();
try
{
while (GetLine(str))
{
str.TrimLeft();
str.TrimRight();
if (str.GetLength() == 0) // empty string
continue;
if (str[0] == _T('[')) // another section
break;
if (str[0] == _T(';')) // entry is commented
continue;
m_arrLines.push_back(str);
}
}
catch (exception& x)
{
CString str;
// Note STL exception in event log.
CBuildSrcFileLinenoStr SrcLoc( __FILE__, __LINE__ );
CEvent::ReportWFEvent( SrcLoc.GetSrcFileLineStr(),
SrcLoc.GetSrcFileLineStr(),
CCharConversion::ConvertACharToString(x.what(), str),
_T(""),
EV_GTS_STL_EXCEPTION );
}
}
SetPos(save_pos);
}