📄 inirw.cpp
字号:
#include <stdafx.h>
#include "inirw.h"
INIRW::INIRW() //初始化函数
{
iniFile="";
initFlag=false;
}
INIRW::INIRW(const char* iFile) //带文件参数初始化
{
if(FileExists(iFile))
{
iniFile=iFile;
initFlag=true;
}
else
{
iniFile="";
initFlag=false;
}
}
INIRW::INIRW(const char* iFile, BOOL flag) //如果文件不存在,且标志为真时,会创建该文件
{
HANDLE hfile;
if(FileExists(iFile))
{
iniFile=iFile;
initFlag=true;
}
else
{
if(flag)
{
if((hfile=CreateFile(iFile, GENERIC_WRITE, FILE_SHARE_READ , NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE)
{
if(!CloseHandle(hfile)) //关闭文件句柄,否则INI文件不能读写
{
AfxMessageBox("INI设置文件操作失败,程序将关闭");
exit(0);
}
iniFile=iFile;
initFlag=true;
InitFile(); //调用初始化文件,可以自定义的虚函数
}
else
{
iniFile="";
initFlag=false; //创建文件失败
}
}
else
{
iniFile="";
initFlag=false;
}
}
}
BOOL INIRW::SetFileName(const char* iFile, BOOL flag)
{
HANDLE hfile;
if(FileExists(iFile))
{
iniFile=iFile;
initFlag=true;
}
else
{
if(flag)
{
if((hfile=CreateFile(iFile, GENERIC_WRITE, FILE_SHARE_READ , NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE)
{
if(!CloseHandle(hfile)) //关闭文件句柄,否则INI文件不能读写
{
AfxMessageBox("INI设置文件操作失败,程序将关闭");
exit(0);
}
iniFile=iFile;
initFlag=true;
InitFile(); //调用初始化文件,可以自定义的虚函数
}
else
{
iniFile="";
initFlag=false; //创建文件失败
}
}
else
{
iniFile="";
initFlag=false;
}
}
return initFlag;
}
BOOL INIRW::SetFileName(const char* iFile) //设置一个INI文件,如果文件不存在,则失败
{
if(FileExists(iFile))
{
iniFile=iFile;
initFlag=true;
}
else
{
iniFile="";
initFlag=false;
}
return initFlag;
}
long INIRW::GetAllSection(char *Buf, unsigned int SectionLenth) //得到INI文件所有字段
{
if(!initFlag)
{
return 0; //文件关联不成功,不进行操作
}
return GetPrivateProfileString(NULL, "", "", Buf, SectionLenth, iniFile);
}
long INIRW::GetAllSection(CString& Buf, unsigned int SectionLenth) //复到INI文件的所有字段
{
long len;
char* tmp;
if(!initFlag)
{
return 0; //文件关联不成功,不进行操作
}
tmp=new char[SectionLenth];
len=GetPrivateProfileString(NULL, "", "", tmp, SectionLenth, iniFile);
if(len>2)
{
Buf=tmp;
}
else
{
Buf="";
}
delete[] tmp;
return len;
}
BOOL INIRW::DelSection(const char* Section) //删除指定段的所有内容
{
if(!initFlag)
{
return false; //文件关联不成功,不进行操作
}
WritePrivateProfileString(Section, NULL, NULL, iniFile);
return true;
}
long INIRW::ReadKeyValue(const char* Section, const char* Key, CString& Buf) //读出指定键值字符串
{
if(!initFlag)
{
return 0; //文件关联不成功,不进行操作
}
char* tmp=new char[255];
long len;
len = GetPrivateProfileString(Section, Key, NULL, tmp, 255, iniFile);
Buf=tmp;
delete []tmp;
return len;
}
long INIRW::ReadKeyValue(const char* Section, const char* Key) //读出一个整数
{
if(!initFlag)
{
return 0; //文件关联不成功,不进行操作
}
long Value;
Value=GetPrivateProfileInt(Section, Key, 0, iniFile);
return Value;
}
BOOL INIRW::WriteKeyValue(const char* Section, const char* Key, const char* String) //写入一个字符串
{
if(!initFlag)
{
return 0; //文件关联不成功,不进行操作
}
return WritePrivateProfileString(Section, Key, String, iniFile);
}
BOOL INIRW::WriteKeyValue(const char* Section, const char* Key, long Value) //写入一个整数值
{
if(!initFlag)
{
return false; //文件关联不成功,不进行操作
}
BOOL ret;
char* tmp=new char [30];
tmp=ltoa(Value,tmp,10);
ret=WritePrivateProfileString(Section, Key, tmp, iniFile);
delete[] tmp;
return true;
}
BOOL INIRW::FileExists(const char* filename) //测试一个文件是否存在
{
CFileStatus fs;
if(CFile::GetStatus(_T(filename),fs))
{
return true;
}
else
{
return false;
}
}
const char* INIRW::GetIniFileName(void) //返回当前绑定的INI文件的名字
{
return _T(iniFile);
}
void INIRW::InitFile(void)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -