📄 inifile.cpp
字号:
// IniFile.cpp: implementation of the CIniFile class.
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "IniFile.h"
//#include "fstream.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
/////////////////////////////////////////////////////////////////////
// Construction/Destruction
/////////////////////////////////////////////////////////////////////
//default constructor
CIniFile::CIniFile()
{
}
//default destructor
CIniFile::~CIniFile()
{
}
/////////////////////////////////////////////////////////////////////
// Public Functions
/////////////////////////////////////////////////////////////////////
//sets path of ini file to read and write from
void CIniFile::SetPath(CString Path)
{
FilePath = Path;
if(Path.Right(2)!="\\") FilePath+="\\";
}
//open ini file for read
BOOL CIniFile::OpenIniFileForRead()
{
BOOL bExist=IniFile.Open(FilePath+FileName,CFile::modeRead);
return bExist;
}
//open ini file for write
BOOL CIniFile::OpenIniFileForWrite()
{
BOOL bExist=IniFile.Open(FilePath+FileName,CFile::modeCreate | CFile::modeWrite);
return bExist;
}
void CIniFile::CloseIniFile()
{
IniFile.Close();
}
//find Section in ini file
BOOL CIniFile::FindSection(CString Section)
{
IniFile.SeekToBegin();
CString str;
BOOL bFind=FALSE;
// BOOL bEnd=IniFile.ReadString(str);
// while(!bFind && bEnd)
// {
// if(str.Find(Section)>=0)
// {
// bFind=TRUE;
// break;
// }
// bEnd=IniFile.ReadString(str);
// }
return bFind;
}
//write Section to ini file
BOOL CIniFile::WriteSection(CString Section)
{
CFileStatus status;
if(IniFile.GetStatus(status))
{
// IniFile.WriteString("["+Section+"]\n");
return TRUE;
}
else
return FALSE;
}
//write Item and value of int to ini file
BOOL CIniFile::WriteItemInt(CString Item,int Value)
{
CFileStatus status;
if(IniFile.GetStatus(status))
{
CString str;
str.Format(_T("%d"),Value);
str=Item+"="+str+"\n";
// IniFile.WriteString(str);
return TRUE;
}
else
return FALSE;
}
//write Item and value of CString to ini file
BOOL CIniFile::WriteItemString(CString Item, CString Value)
{
CFileStatus status;
if(IniFile.GetStatus(status))
{
// IniFile.WriteString(Item+"="+Value+"\n");
return TRUE;
}
else
return FALSE;
}
//read value of int from ini file
BOOL CIniFile::GetItemInt(CString Section, CString Item, int &Value)
{
CFileStatus status;
if(IniFile.GetStatus(status))
{
if(FindSection(Section))
{
CString buf,sub;
BOOL bFind=FALSE;
BOOL bEnd;//=IniFile.ReadString(buf);
while(!bFind && bEnd)
{
sub=buf.Left(buf.Find(_T("=")));
if(buf.Find(_T("["))<0 && !sub.IsEmpty() && sub.Find(Item)>=0)
{
sub=buf.Right(buf.GetLength()-buf.Find(_T("="))-1);
sub=GetValueString(sub);
char * cCount;
memset(cCount, 0,128);//这里的128如果改成256会出错,程序要关掉才能正常,浪费半个多小时
WideCharToMultiByte( CP_ACP, 0, sub, -1, cCount, 128, NULL, NULL);
Value=atoi(cCount);
bFind=TRUE;
break;
}
//bEnd=IniFile.ReadString(buf);
}
return bFind;
}
else
return FALSE;
}
else
return FALSE;
}
//read value of CString from ini file
BOOL CIniFile::GetItemString(CString Section, CString Item, CString &Value)
{
CFileStatus status;
if(IniFile.GetStatus(status))
{
if(FindSection(Section))
{
CString buf,sub;
BOOL bFind=FALSE;
BOOL bEnd;//=IniFile.ReadString(buf);
while(!bFind && bEnd)
{
sub=buf.Left(buf.Find(_T("=")));
if(buf.Find(_T("["))<0 && !sub.IsEmpty() && sub.Find(Item)>=0)
{
sub=buf.Right(buf.GetLength()-buf.Find(_T("="))-1);
Value=GetValueString(sub);
bFind=TRUE;
break;
}
// bEnd=IniFile.ReadString(buf);
}
return bFind;
}
else
return FALSE;
}
else
return FALSE;
}
//get value(CString) from str
CString CIniFile::GetValueString(CString str)
{
int length=str.GetLength();
BOOL bSpace=TRUE;
while(length && bSpace)
{
if(str[0]==' ')
str=str.Right(--length);
else
bSpace=FALSE;
}
bSpace=TRUE;
while(length && bSpace)
{
if(str[length-1]==' ')
str=str.Left(--length);
else
bSpace=FALSE;
}
return str;
}
//write any string to ini file,"\n"
BOOL CIniFile::WriteString(CString str)
{
CFileStatus status;
if(IniFile.GetStatus(status))
{
//IniFile.WriteString(str);
return TRUE;
}
else
return FALSE;
}
//sets name of ini file to read and write from
void CIniFile::SetName(CString Name)
{
FileName=Name;
}
BOOL CIniFile::deleteFile()
{
IniFile.Close();
IniFile.Remove(FilePath+FileName);
return TRUE;
}
CString CIniFile::getPath()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
TCHAR szAppName[MAX_PATH]; // 父目录的路径, 最后不带"\"
TCHAR *pLastSlash;
char szFileName[_MAX_PATH];
memset(szFileName,0,128);
GetModuleFileName(NULL, szAppName, MAX_PATH);
pLastSlash = _tcsrchr(szAppName, _T('\\')); // 截掉文件名,只保留路径
if(pLastSlash!=NULL) *pLastSlash=_T('\0');
WideCharToMultiByte(CP_ACP, 0, szAppName, -1, szFileName, sizeof(szFileName), NULL, NULL);
return szFileName;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -