我的一个纯文本的ini文件中内容如下:
Text=it is ok
Num=501.如何能取出it is ok赋给一个CString对象
2.如何取出50赋给int对象?
3.需要用到什么类,用到什么方法呢?
4.如果要重新再写新的值到里面应该怎么做呢?应该用搜索吗?
5.用ini文件这样保存设定值合适吗?
6.是否要在每句话后面加上分号?你熟悉的朋友指点一下。
Text=it is ok
Num=501.如何能取出it is ok赋给一个CString对象
2.如何取出50赋给int对象?
3.需要用到什么类,用到什么方法呢?
4.如果要重新再写新的值到里面应该怎么做呢?应该用搜索吗?
5.用ini文件这样保存设定值合适吗?
6.是否要在每句话后面加上分号?你熟悉的朋友指点一下。
GetPrivateProfileString()
GetPrivateProfileint()
如果不是,可以自己写一下,也很容易。标准的INI例子[服务端设置]
IP = xxx.xx.xx.x
Port = xxxxx
GetPrivateProfileString()
GetPrivateProfileint()
如果不是,可以自己写一下,也很容易。标准的INI例子[服务端设置]
IP = xxx.xx.xx.x
Port = xxxxx
The WritePrivateProfileString function copies a string into the specified section of the specified initialization file. This function is provided for compatibility with 16-bit Windows-based applications. WIn32-based applications should store initialization information in the registry. BOOL WritePrivateProfileString(
LPCTSTR lpAppName, // pointer to section name
LPCTSTR lpKeyName, // pointer to key name
LPCTSTR lpString, // pointer to string to add
LPCTSTR lpFileName // pointer to initialization filename
);
LPCTSTR lpAppName, // points to section name
LPCTSTR lpKeyName, // points to key name
LPCTSTR lpDefault, // points to default string
LPTSTR lpReturnedString, // points to destination buffer
DWORD nSize, // size of destination buffer
LPCTSTR lpFileName // points to initialization filename
);
// Filename : INI.h
// Class Information : CINI v1.0
// Copyright(c) By Wildcat Studio.Li 2002.6 China
// E-mail : [email protected] QQ : 21021078
// Notice : X
////////////////////////////////////////////////////////////////////////////////////////#if !defined(AFX_INI_H__579180A1_A60C_4B9E_AC59_F4C90FA54B28__INCLUDED_)
#define AFX_INI_H__579180A1_A60C_4B9E_AC59_F4C90FA54B28__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class CINI
{
public:
BOOL DeleteKey(CString csSectionName, CString csKeyName);
BOOL AddKey(CString csSectionName, CString csKeyName,CString csKeyValue);
void Close();
BOOL WriteINIFile();
BOOL SetKeyValue(CString csSectionName, CString csKeyName,CString csKeyValue);
CString GetKeyValue(CString csSectionName,CString csKeyName);
void SetSensitivityChar(char cReChar,char cEvaluateChar,char cSectionLeftChar,char cSectionRightChar);
BOOL ReadINIFile(CString csINIFilename);
CINI();
virtual ~CINI();private:
CString m_csINIFilename;
CStringArray m_csaSectionKeys;
char m_cSectionRightChar;
char m_cSectionLeftChar;
char m_cEvaluateChar;
char m_cReChar;
protected:
int FindKeyPosition(CString csSectionName,CString csKeyName);
int FindSectionPosition(CString csSectionName);
};#endif // !defined(AFX_INI_H__579180A1_A60C_4B9E_AC59_F4C90FA54B28__INCLUDED_)
////////////////////////////////////////////////////////////////////////////////////////
// Filename : INI.cpp
// Class Information : CINI v1.0
// Copyright(c) By Wildcat Studio.Li 2002.6 China
// E-mail : [email protected] QQ : 21021078
// Notice : X
////////////////////////////////////////////////////////////////////////////////////////#include "stdafx.h"#include "INI.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////CINI::CINI()
{
m_cReChar=0;
m_cEvaluateChar=0; m_cSectionLeftChar=0;
m_cSectionRightChar=0;
}CINI::~CINI()
{
m_cReChar=0;
m_cEvaluateChar=0; m_cSectionLeftChar=0;
m_cSectionRightChar=0; m_csaSectionKeys.RemoveAll();
}BOOL CINI::ReadINIFile(CString csINIFilename)
{
CStdioFile csf;
CString csLine; if(!csf.Open(csINIFilename,CFile::modeRead | CFile::typeText))
return FALSE; m_csINIFilename=csINIFilename; m_csaSectionKeys.RemoveAll(); while(csf.ReadString(csLine)!=NULL){
m_csaSectionKeys.Add(csLine);
} csf.Close(); return TRUE;
}void CINI::SetSensitivityChar(char cReChar, char cEvaluateChar, char cSectionLeftChar, char cSectionRightChar)
{
m_cReChar=cReChar;
m_cEvaluateChar=cEvaluateChar; m_cSectionLeftChar=cSectionLeftChar;
m_cSectionRightChar=cSectionRightChar;
}CString CINI::GetKeyValue(CString csSectionName, CString csKeyName)
{
if(m_csINIFilename=="")
return ""; int i=FindKeyPosition(csSectionName,csKeyName); if(i==-1)
return ""; return m_csaSectionKeys.GetAt(i).Right(m_csaSectionKeys.GetAt(i).GetLength()-m_csaSectionKeys.GetAt(i).Find(m_cEvaluateChar)-1);
}BOOL CINI::SetKeyValue(CString csSectionName, CString csKeyName, CString csKeyValue)
{
if(m_csINIFilename=="")
return FALSE; int i=FindKeyPosition(csSectionName,csKeyName); if(i==-1)
return FALSE; m_csaSectionKeys.SetAt(i,m_csaSectionKeys.GetAt(i).Left(m_csaSectionKeys.GetAt(i).Find(m_cEvaluateChar))+m_cEvaluateChar+csKeyValue); return TRUE;
}BOOL CINI::WriteINIFile()
{
CStdioFile csf; CFile::Remove(m_csINIFilename); if(!csf.Open(m_csINIFilename,CFile::modeCreate | CFile::modeWrite | CFile::typeText))
return FALSE; for(int i=0;i<m_csaSectionKeys.GetSize();i++)
csf.WriteString(m_csaSectionKeys.GetAt(i)+'\n'); csf.Close(); return TRUE;
}void CINI::Close()
{
m_csINIFilename=""; m_csaSectionKeys.RemoveAll();
}BOOL CINI::AddKey(CString csSectionName, CString csKeyName, CString csKeyValue)
{
if(m_csINIFilename=="")
return FALSE; int i=FindSectionPosition(csSectionName); if(i==-1){
m_csaSectionKeys.Add(m_cSectionLeftChar+csSectionName+m_cSectionRightChar);
m_csaSectionKeys.Add(csKeyName+m_cEvaluateChar+csKeyValue);
}else
m_csaSectionKeys.InsertAt(i+1,csKeyName+m_cEvaluateChar+csKeyValue,1); return TRUE;
}BOOL CINI::DeleteKey(CString csSectionName, CString csKeyName)
{
if(m_csINIFilename=="")
return FALSE; int i=FindKeyPosition(csSectionName,csKeyName); if(i==-1)
return FALSE; m_csaSectionKeys.RemoveAt(i); return TRUE;
}int CINI::FindSectionPosition(CString csSectionName)
{
CString csNowLine; for(int i=0;i<m_csaSectionKeys.GetSize();i++){
csNowLine=m_csaSectionKeys.GetAt(i); if(csNowLine.Left(1)==m_cReChar)
continue; if(csNowLine.Left(1)==m_cSectionLeftChar && csNowLine.Right(1)==m_cSectionRightChar && csNowLine.Mid(1,csNowLine.GetLength()-2)==csSectionName)
return i;
} return -1;
}int CINI::FindKeyPosition(CString csSectionName, CString csKeyName)
{
CString csNowSectionName,csNowLine; for(int i=0;i<m_csaSectionKeys.GetSize();i++){
csNowLine=m_csaSectionKeys.GetAt(i); if(csNowLine.Left(1)==m_cReChar)
continue; if(csNowLine.Left(1)==m_cSectionLeftChar && csNowLine.Right(1)==m_cSectionRightChar)
csNowSectionName=csNowLine.Mid(1,csNowLine.GetLength()-2); if(csNowLine.Left(csNowLine.Find(m_cEvaluateChar))==csKeyName && csNowLine.Find(m_cEvaluateChar)!=-1 && csNowSectionName==csSectionName)
return i;
} return -1;
}