近來整理一下資料,把有些東西歸類一下。
需要讀寫ini文件的資料。網上找了兩個。
第一個,是.h和.cpp版本不同。
第二個,函數聲明太含糊,不方便使用者調用。
索性花點時間自己寫一個。(首先確定,一定要簡單實用,別人一看就明白。)
完整工程:http://zhmster.googlepages.com/opini.rar
提醒注意:ini文件和exe文件必須在同個目錄。
// OPini.h: interface for the COPini class.
//
//////////////////////////////////////////////////////////////////////
// ***************************************************************
// OPini version: 1.0 ? date: 07/19/2007
// -------------------------------------------------------------
// 這個類用來讀取exe下ini文件的內容。
// -------------------------------------------------------------
// Copyright (C) 2007 - All Rights Reserved
// ***************************************************************
//
// ***************************************************************
#if !defined(AFX_OPINI_H__CE3F8B7B_1ACA_46CC_A91C_F8E23FA9B063__INCLUDED_)
#define AFX_OPINI_H__CE3F8B7B_1ACA_46CC_A91C_F8E23FA9B063__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <afxwin.h>
class COPini
{
public:
static DWORD ReadString (char *section, char * key, char stringtoread[], char * filename);
static BOOL WriteString(LPCTSTR section, LPCTSTR key,char* stringtoadd, char *filename);
COPini();
virtual ~COPini();
};
#endif // !defined(AFX_OPINI_H__CE3F8B7B_1ACA_46CC_A91C_F8E23FA9B063__INCLUDED_)
// OPini.cpp: implementation of the COPini class.
//
//////////////////////////////////////////////////////////////////////
#include "OPini.h"
/********************************************************************
created: 2007/07/19
created: 19:7:2007 10:13
filename: OPini.cpp
file path:
file base: OPini
file ext: cpp
author: alantop
purpose: 讀取INI文件。
*********************************************************************/
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
COPini::COPini()
{
}
COPini::~COPini()
{
}
/*****************************************************************************
Function: //
Description: // 寫字符串到INI文件
Calls: //
Called By: //
Table Accessed: //
Table Updated: //
Input: //
Output: //
Return: // 成功返回真,失敗返回假.失敗后,可用DWORD GetLastError(VOID)
查詢失敗原因。
Others: //
author: // alantop
date: // 2007.07.19
******************************************************************************/
/*
void error(LPSTR lpszFunction)
{
CHAR szBuf[80];
DWORD dw = GetLastError();
sprintf(szBuf, "%s failed: GetLastError returned %u\n",
lpszFunction, dw);
MessageBox(NULL, szBuf, "Error", MB_OK);
ExitProcess(dw);
}
*/
BOOL COPini::WriteString(LPCTSTR section, LPCTSTR key, char *stringtoadd, char *filename)
{
CHAR FilePath[255];
GetModuleFileName(NULL,FilePath,255);
//Scan a string for the last occurrence of a character.
(strrchr(FilePath,'\\'))[1] = 0;
strcat(FilePath,filename);
return ::WritePrivateProfileString(section,key,stringtoadd,FilePath);
}
/*****************************************************************************
Function: //
Description: // 從INI文件中讀取字符串
Calls: //
Called By: //
Table Accessed: //
Table Updated: //
Input: //
Output: //
Return: // 讀取了多少個字節的字符
Others: //
author: // alantop
date: // 2007.07.19
******************************************************************************/
DWORD COPini::ReadString(char *section, char * key, char stringtoread[], char * filename)
{
CHAR FilePath[255];
GetModuleFileName(NULL,FilePath,255);
(strrchr(FilePath,'\\'))[1] = 0;
strcat(FilePath,filename);
return ::GetPrivateProfileString(section, key,NULL,stringtoread,255,FilePath);
}
示例:
#include <stdio.h>
#include "opini.h"
void main()
{
char stringtoread[200];
COPini::ReadString("group", "item", stringtoread, "test.ini");
char stringtoadd[] = "hello1";
COPini::WriteString("group", "item", stringtoadd, "test.ini");
return;
}