程序运行信息的非注册表保存类(ini 文件操作类)

原创 2002年02月05日 08:59:00

现在的程序一般都要记录一些自己的运行信息,这些信息要保存在什么地方呢?微软的建议是保存在注册表中,这样不容易丢失。但最近我对一些普通电脑用户了解,用户们并不希望程序向注册表中写非系统性的信息,避免注册表越来越大,现在一般使用半年以上的电脑,一般注册表都在 30M 以上,电脑的启动速度明显变慢。因此我这里用 windows 以前的函数写了一个操作INI文件的类,把程序的运行信息保存在当前目录中的 INI 文件中。

该类可以直接读写  string,int,DWORD,doule 四种数据,操作简单,具体代码如下:

#define MAX_LENGTH 256

class CIniFile 
{
public:
 CIniFile();
 virtual ~CIniFile();

 void SetIniFileName(CString FileName)
 { IniFileName = FileName; }

 CString GetIniFileName()
 { return IniFileName; }

 CString GetString(CString AppName,CString KeyName,CString Default = "");
 int GetInt(CString AppName,CString KeyName,int Default = 0);
 double GetDouble(CString AppName,CString KeyName,double Default = 0);
 unsigned long GetDWORD(CString AppName,CString KeyName,unsigned long Default = 0);

 BOOL SetString(CString AppName,CString KeyName,CString Data);
 BOOL SetInt(CString AppName,CString KeyName,int Data);
 BOOL SetDouble(CString AppName,CString KeyName,double Data);
 BOOL SetDWORD(CString AppName,CString KeyName,unsigned long Data);

private:
 CString IniFileName;
};

 

CIniFile::CIniFile()
{
 char szAppName[MAX_PATH];
 int  len;

 ::GetModuleFileName(AfxGetInstanceHandle(), szAppName, sizeof(szAppName));
 len = strlen(szAppName);
 for(int i=len; i>0; i--)
 {
  if(szAppName[i] == '.')
  {
   szAppName[i+1]='/0';
   break;
  }
 }
 strcat(szAppName, "ini");
 IniFileName = szAppName;
}

CIniFile::~CIniFile()
{

}

CString CIniFile::GetString(CString AppName,CString KeyName,CString Default)
{
 TCHAR buf[MAX_LENGTH];
  ::GetPrivateProfileString(AppName, KeyName, Default, buf, sizeof(buf), IniFileName);
  return buf;
}

double CIniFile::GetDouble(CString AppName,CString KeyName,double Default)
{
 TCHAR buf[MAX_LENGTH];
 CString temp;
 temp.Format("%f",Default);
  ::GetPrivateProfileString(AppName, KeyName, temp, buf, sizeof(buf), IniFileName);
  return atof(buf);
}

int CIniFile::GetInt(CString AppName,CString KeyName,int Default)
{
  return ::GetPrivateProfileInt(AppName, KeyName, Default, IniFileName);
}

unsigned long CIniFile::GetDWORD(CString AppName,CString KeyName,unsigned long Default)
{
 TCHAR buf[MAX_LENGTH];
 CString temp;
 temp.Format("%u",Default);
  ::GetPrivateProfileString(AppName, KeyName, temp, buf, sizeof(buf), IniFileName);
  return atol(buf);
}

 


BOOL CIniFile::SetString(CString AppName,CString KeyName,CString Data)
{
  return ::WritePrivateProfileString(AppName, KeyName, Data, IniFileName);
}

BOOL CIniFile::SetInt(CString AppName,CString KeyName,int Data)
{
 CString temp;
 temp.Format("%d",Data);
  return ::WritePrivateProfileString(AppName, KeyName, temp, IniFileName);
}

BOOL CIniFile::SetDouble(CString AppName,CString KeyName,double Data)
{
 CString temp;
 temp.Format("%f",Data);
  return ::WritePrivateProfileString(AppName, KeyName, temp, IniFileName);
}

BOOL CIniFile::SetDWORD(CString AppName,CString KeyName,unsigned long Data)
{
 CString temp;
 temp.Format("%u",Data);
  return ::WritePrivateProfileString(AppName, KeyName, temp, IniFileName);
}

C++学习:一个通用ini配置文件操作类

在windows平台下,简单的程序可以通过ini文件实现简单的配置,简单适用。在win32 sdk还提供了相应的api来读取修改ini文件。ini配置文件格式为: [section] key=st...
  • KiteRunner
  • KiteRunner
  • 2012年09月30日 10:59
  • 2150

一个ini文件读写类的设计和实现

前言:        决定自己写一个ini读写类,希望对大家能有所帮助。       如有朋友发现问题,请务必致信bicheng.gui@gmail.com 1. 什么是ini文件?    ni 文件...
  • bichenggui
  • bichenggui
  • 2009年05月15日 17:31
  • 1285

C#INI文件操作类

参考文章:http://www.cnblogs.com/wayfarer/archive/2004/07/16/24783.html using System; using System.Coll...
  • friendan
  • friendan
  • 2015年01月11日 20:17
  • 4286

C#中自定义操作INI文件的类

//网上收集的一个专门操作INI文件的类,有改动.using System;using System.IO;using System.Runtime.InteropServices;using Sys...
  • ltolll
  • ltolll
  • 2008年01月23日 17:41
  • 1750

ini文件操作类 CiniFile

原版地址在这里.应用的时候要将cinifile.h文件里的#include        #include     #include   #include    这几个头文件放到stdafx.h里去。...
  • sunnyloves
  • sunnyloves
  • 2010年05月10日 18:32
  • 2684

C++封装ini操作

转自:http://blog.csdn.net/lewutian/article/details/6787048# C++封装ini操作 // IniFile.h #ifndef __INI...
  • rankun1
  • rankun1
  • 2016年11月25日 16:16
  • 521

一种比“ini配置文件”和“注册表”更好用的保存“初始化信息”的方法—CArchive类

一种比“ini配置文件”和“注册表”更好用的 保存“初始化信息”的方法     在编写程序时,经常需要将一些初始化信息写入到一个ini配置文件中,当程序启动时从这个配置文件中读取这些初始化信息,当...
  • fanghb_1984
  • fanghb_1984
  • 2012年02月19日 22:29
  • 2233

C++实现INI文件读写

1. 概述 本文章主要参考这篇博客进行修改的,增加注释和修复了一些问题。这里给出完整的实现文件,在需要的地方包含该头文件就好了。 2. 实现 CMyINI.h #pragma once #...
  • m_buddy
  • m_buddy
  • 2017年01月05日 19:41
  • 1155

Ini文本文件操作类

操作.ini文件的类库,该类型文件在Winform和Webform开发中经常用到,用于存储系统配置信息等。IniHelper.cs using System;using System.Runtime....
  • beasyer
  • beasyer
  • 2007年06月20日 23:09
  • 580

VB6: Ini文件操作类

Option Explicit '' INI文件读写Api Private Declare Function GetPrivateProfileString Lib "kernel32" Alias...
  • yao_yu_126
  • yao_yu_126
  • 2013年05月12日 20:30
  • 1705
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序运行信息的非注册表保存类(ini 文件操作类)
举报原因:
原因补充:

(最多只允许输入30个字)