본문 바로가기

프로그래밍/MFC

INI 파일제어 (GetPrivateProfileString, WritePrivateProfileString )






INI 파일의 구조는 보통 다음과 같이 되어있습니다.

예) setup.ini

 [Title1]
Name=test.cpp
Path=C:\temp\test.cpp
Version=2.1.0.1
[Title2]
Name=test.cpp
Path=C:\temp\test.cpp
Version=2.1.0.1
.
.

위 파일을 제어(읽기/쓰기)하려면 다음과 같은 함수를 사용합니다.

GetPrivateProfileString() : 파일에서 정보(문자열)를 읽어온다.
WritePrivateProfileString() : 파일에 정보(문자열)를 쓴다. 만약에 해당 섹션과 키값이 없으면 자동으로 생성한다.

각 함수의 원형은 다음과 같습니다.


DWORD GetPrivateProfileString(
  LPCTSTR lpAppName,       // [Title1]과 같은 섹션(대제목)입니다.
  LPCTSTR lpKeyName,       // Name과 같은 키값(구성요소)입니다.
  LPCTSTR lpDefault,           // 섹션이름이나 키이름을 찾지 못하면 디폴트로 출력할 스트링입니다.
  LPTSTR lpReturnedString// Name과 같은 키값(구성요소)에서 가리키는 값(test.cpp)을 저장할 버퍼입니다.
  DWORD nSize,                  // 키값을 저장할 버퍼의 사이즈입니다.
  LPCTSTR lpFileName        // INI 파일(setup.ini)의 경로입니다.
);
 BOOL WritePrivateProfileString(
  LPCTSTR lpAppName,     // [Title1]과 같은 섹션(대제목)입니다.
  LPCTSTR lpKeyName,     // Name과 같은 키값(구성요소)입니다.
  LPCTSTR lpString,           // Name과 같은 키값(구성요소)에 작성할 정보(문자열)입니다.
  LPCTSTR lpFileName      // INI 파일(setup.ini)의 경로입니다.
);


사용법은 각 함수의 파라메터에 맞게 값을 넣어주면 됩니다.

예를 들면..

GetPrivateProfileString( "Title1", "Name", "No Info", inbuffer, sizeof(inbuffer), "C:\\temp\\setup.ini" );
//설명 : C:\\temp\\setup.ini 파일에서 Title1의 Name 값을 inbuffer 사이즈만큼 읽어와라,
         Name값이 없으면 No Info값을 inbuffer에 저장하라.

WritePrivateProfileString( "Title1", "Name", outbuffer, "C:\\temp\\setup.ini" );
//설명 : C:\\temp\\setup.ini 파일에서 Title1의 Name 값을 outbuffer에 정보(문자열)를 써라.