近来整理一下资料,把有些东西归类一下。

需要读写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
;
}