728x90

간단한 프로젝트에서는 ini를 많이 사용하는데, 모든 함수를 일일히 만들기는 힘들기(귀찮기...) 때문에, CodeProject에서 많이 사용한 CIni를 사용하면 좋다.


이 클래스를 이용하면 읽기, 쓰기, 수정등의 함수들을 제공하므로 사용법만 익히면 된다.


CIni : https://www.codeproject.com/Articles/5401/CIni


CIni.h

CIni.cpp



사용법




위 사용 방법에는 없지만 bool, char, 문자열 배열 등 많은 기능이 더 있다.

사용 방법은 위의 3개와 거의 비슷하기 때문에 그냥 쓰면 될 것 같다.

728x90

'Script > ini' 카테고리의 다른 글

ini - 설정파일(ini) 사용하기  (0) 2016.03.03
728x90

프로그램 제작시 어느정도 규모를 가추게 되면 설정해야 할 것들이 많아지게 된다.

그 중에 너무나 자주 건들어야하는 몇가지 옵션들이 존재한다.

 

가령 DirectX나 OpenGL사용시에 카메라의 위치나 방향 또는 창의 크기가 그것일 수 있고 또는 지금 테스트 중인 맵파일을 변경 한더던지 초당프레임 제한이라던지 등등이 있을 수 있다.

 

이때 소스를 직접 건들어 수정하게 되면 너무나 복잡한 과정이 기다리고 있다.

그래서 보통 좀 더 중규모 게임 제작에는 스크립트나 XML파일들을 사용하기도 한다.

 

하지만 아주 작은 규모의 게임이나 또는 소규모 툴 제작에 있어서는 스크립트나 XML파일을 읽고 수정하는데 필요한 라이브러리 조차 붙이는게 귀찮을 수 있는데 그럴때 표준 설정파일(*.ini) 포맷을 쓰면 매우 유용하다.

 

이 포맷을 읽는데에는 별도의 라이브러리가 필요 없으며 지금 사용하는 C언어 툴이 표준 C++ 라이브러리를 준수하는 툴이라면 충분하다.

 

텍스트 파일을 만들 수 있는 툴을 열고(NotePade 또는 메모장) 아래의 형식을 지켜 입력 해준다.

[AppName]

KeyName = ReturnValue

그후에 확장자 명을 ini로 변경해준다.

 

우리가 제작 중인 소스에는 아래의 함수를 사용해준다.

GetPrivateProfileString(AppName,KeyName,Default,ReturnValue,Size,FileName)

AppName : 읽고자하는 INI파일의 AppName을 적는다.(문자열)

KeyName : 읽고자하는 ReturnValue의 KeyName을 적는다.(문자열)

Default : KeyName으로 설정값을 가져오는데 실패하면 기본적으로 설정해주는 Value값을 적는다.(문자열)

ReturnValue : INI에 있는 설정값중 AppName,KeyName에 해당하는 값을 읽어온다.(문자열)

Size : ReturnValue의 길이(크기)값을 적되 길이보다 크게 적어도 상관없다.(숫자)

FileName : INI파일명. 풀경로로 적되 현재폴더에 따라서 읽고 싶다면 "./Option.ini" 이런식을 따른다.

 

파일명 "Option.ini"

[Camera]

PosX = 0.0

PosY = 0.0

PosZ = -25.0

[FrameCheck]

FrameOnSec = 20

 

소스부분

//환경설정

GetPrivateProfileString( "Camera", "PosX", NULL, szData, 512, pFileName );

vecPos.x = atof(szData);

GetPrivateProfileString( "Camera", "PosY", NULL, szData, 512, pFileName );

vecPos.y = atof(szData);

GetPrivateProfileString( "Camera", "PosZ", NULL, szData, 512, pFileName );

vecPos.z = atof(szData);

GetPrivateProfileString( "FrameCheck", "FrameOnSec", NULL, szData, 512, pFileName );

CFrameCheck::GetInstance()->SetFrameSec(atoi(szData));

 

신경 써야 할 것은 읽은 정보자체가 모두 문자열이기 때문에 숫자(정수,부동소숫점) 형태로 다시 바꿔줘야 할 필요도 있다.

 

출처 : http://neosafe.blog.me/130045067419

728x90

'Script > ini' 카테고리의 다른 글

ini - CIni Class (ini 클래스)  (0) 2017.09.04

+ Recent posts