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

📄 inirw.cpp

📁 12864 avr驱动程序
💻 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 + -