Where The Streets Have No Name

INI File 입출력 본문

Developement/C, C++, C#

INI File 입출력

highheat 2008. 5. 24. 01:41
출처 : http://www.souljin.net/entry/MFC-INI-File-%EC%9E%85%EC%B6%9C%EB%A0%A5

GetPrivateProfileInt
GetPrivateProfileSection
GetPrivateProfileSectionNames
GetPrivateProfileString
GetPrivateProfileStruct
GetProfileInt
GetProfileSection
GetProfileString
WritePrivateProfileSection
WritePrivateProfileString
WritePrivateProfileStruct
WriteProfileSection
WriteProfileString

위에 정의된 함수들을 이용해 입출력한다.
ini 파일은 션명 = 설정값 형식을 갖는다.
보는데로 앞에 Get이 붙은 함수는 읽어오는 함수이고
Write가 붙은 함수는 기록하는 함수이다.

GetPrivateProfileInt 함수는
UINT
GetPrivateProfileInt(
  LPCTSTR lpAppName,
  LPCTSTR lpKeyName,
  INT nDefault,
  LPCTSTR lpFileName
)

형태로 정수형(숫자)값을 읽어온다.
 
LPCTSTR lpAppName 은 파일안에 []형태로 기록되며
주로 옵션의 그룹명 등으로 사용되어 진다.
 LPCTSTR lpKeyName 은 세션의 이름으로 옵션의 이름을 주로 준다.
INT
nDefault, 는 세션검색값이 없을때 설정되어지는 기본값이다.
LPCTSTR
lpFileName 은 보는그대로 파일명이지만 경로명을 절대값으로 주어야 자신이
원하는 위치에 저장이 가능하다. 그렇지 않으면 윈도우폴더에 기록되어진다.

BOOL
WritePrivateProfileString(
  LPCTSTR lpAppName,
  LPCTSTR lpKeyName,
  LPCTSTR lpString,
  LPCTSTR lpFileName
);

위의 함수는 기록하는 함수로 위에 설명했던 인자들로 구성되어 있으나 디폴트값이 없고
LPCTSTR
lpString,가 위치하고 있다.
이 변수는 저장되어질 문자열 변수의 포인터나 스트링형 변수명을 대입하면 된다.
기록하는 변수는 끝에 Int로 끝나는 함수가 없다. 즉 문자열로 기록한다는 말이다.

위에 두 함수를 가지고 간단한 사용예를 적으면
WritePrivateProfileString("그룹명","키명","값","절대경로명\\파일명.ini");
이렇게 작성하였다면
파일명.ini 안에
[그룹명]
키명=값
형태로 기록이 되어진다.
읽어올때에는
int 변수명 = GetPrivateProfileInt("그룹명","키명","디폴트값(0)","절대경로\\파일명.ini");
파일명.ini 파일에 가서 그룹명으로 먼저 검색을 한 후 키명으로 위치를 찾는다 그리고 을 읽어와 변수명에 넣어준다.
찾는 키명이 없으면 디폴트값(0)을 변수명에 넣어준다.

아래는 클래스형태로 작성된 소스입니다.
http://dblab.co.kr/entry/GetPrivateProfileString-Function-ini-읽기
http://cgim.dongseo.ac.kr/tt/happyguy81/34