⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inifile.cpp

📁 3D赛车游戏源代码-用Visual Studio 2005
💻 CPP
字号:
#include "StdAfx.h"
#include "IniFile.h"

//-------------------------------------------------------------------------------
// 一些常数定义
//-------------------------------------------------------------------------------
#define MAX_SECTION     260     // Section最大长度
#define MAX_KEY         260     // KeyValues最大长度
#define MAX_ALLSECTIONS 256		// 所有Section的最大长度
#define MAX_ALLKEYS     256		// 所有KeyValue的最大长度


//-------------------------------------------------------------------------------
// 构造函数
//-------------------------------------------------------------------------------
CIniFile::CIniFile()
{
	// 初始化配置文件
	GetModuleFileName(NULL, m_szFileName, MAX_PATH);
	lstrcpy(m_szFileName + lstrlen(m_szFileName) - 4, ".ini");     
}

//-------------------------------------------------------------------------------
// 打开ini文件(设置路径)
//-------------------------------------------------------------------------------
bool CIniFile::Open(const char *filename)
{
	strncpy(m_szFileName, filename, sizeof(m_szFileName));

	// 检查文件是否存在
	DWORD  dwFlag = GetFileAttributes((LPCTSTR)m_szFileName);
	
	// 文件或者路径不存在,返回FALSE
	if (0xFFFFFFFF == dwFlag)
		return false;

	// 路径是目录,返回FALSE
	if (FILE_ATTRIBUTE_DIRECTORY & dwFlag)
		return false;

	return true;
}

//-------------------------------------------------------------------------------
// 检查section(节)是否存在
//-------------------------------------------------------------------------------
bool CIniFile::SectionExist(const char *section)
{
	char buffer[MAX_SECTION];

	DWORD ret = GetPrivateProfileString(section, NULL, "", buffer, 
		sizeof(buffer), m_szFileName);

	return ret > 0;
}

//-------------------------------------------------------------------------------
// 读取指定section下key的value(字符串)
//-------------------------------------------------------------------------------
const char * CIniFile::ReadString(const char *section, const char *key, const char *defaultvalue)
{
	static char key_buffer[MAX_KEY];

	DWORD ret = GetPrivateProfileString(section, key, defaultvalue, key_buffer, sizeof(key_buffer), m_szFileName);

	return key_buffer;
}

//-------------------------------------------------------------------------------
// 设置指定section下key的value(字符串),不存在则创建
//-------------------------------------------------------------------------------
bool CIniFile::WriteString(const char *section, const char *key, const char *value)
{
	return WritePrivateProfileString(section, key, value, m_szFileName) > 0;
}

//-------------------------------------------------------------------------------
// 删除指定section下的key及其value
//-------------------------------------------------------------------------------
bool CIniFile::DeleteKey(const char *section, const char *key)
{
	return WritePrivateProfileString(section, key, NULL, m_szFileName) > 0;
}

//-------------------------------------------------------------------------------
// 删除指定section及其所有的key及value
//-------------------------------------------------------------------------------
bool CIniFile::DeleteSection(const char *section)
{
	return WritePrivateProfileString(section, NULL, NULL, m_szFileName) > 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -