오늘은 INI 파일을 사용하는 법에 대해 설명하고자 합니다.


일반적인 INI 함수는 WINNT\SYSTEM 에 저장되어 사용되는것이 대부분인데 이 방식은 INI파일 관리하는데 문제점이 있고.


레지스트리 함수 또한 레지스트리에서 찾기도 힘들고, 관리 또한 힘든 점이 있습니다.


아래의 함수는 특정 폴더 위치에 INI을 생성해서 관리하는 방법을 설명하고자 합니다.


일반적으로 실행되는 위치 또는 그 하위폴더에 잡게 됩니다.


* 특정폴더의 INI 읽기


// CString parm_command : command명

// CString parm_default : 없을경우 default값


CString Util::GetInformationINI(CString parm_command, CString parm_default)

{

// INI

char buffer[256] = {0, };

CString file_str, make_str;

file_str.Format("%s\\read.ini", 읽을위치);


GetPrivateProfileString("COMMON", parm_command, parm_default, buffer, 255, file_str);    

        // file_str의 ini에서 COMMON이란 section 의 parm_command 값 읽기

return buffer;

}


* 사용법

CString aaa = m_util.GetInformationINI("COM_STORE_CODE", "")



* 특정폴더의 INI 에 쓰기


// CString parm_data : 쓸 정보

void Util::SetInformation(CString parm_command, CString parm_data)

{

char buffer[256] = {0, };

CString file_str, make_str;

file_str.Format("%s\\read.ini", m_exe_str);

WritePrivateProfileString("COMMON", parm_command, parm_data, file_str);

}


* 사용법

m_util.SetInformation("COM_STORE_CODE", "1234");



참 쉽죠~~

마니마니  사용해주세요.~












오늘은 문자 또는 문자열을 split 하는 방법에 대해 설명합니다.


보통 자바스크립트나 자바 등에서는 쉽게 제공이 되지만 C++에서는 직접 구현을 해줘야 합니다.


여러군데에서 설명나온걸 마니 보았지만 실제 업무에서 적용되어서 운영되는 것인지 명확하지 않기 때문에 제가 현재 사용하고 있는 함수를 공개합니다.


* 문자단위의 split


int Util::Split(LPCTSTR lpszExpression, TCHAR chDelimiter, CStringArray &result)

{

int nCount = 0;

CString strSub;


while (AfxExtractSubString(strSub, lpszExpression, nCount++, chDelimiter)){

strSub.TrimLeft();

strSub.TrimRight();

result.Add(strSub);

}

return nCount;

}



위 함수는 하나의 문자에 대해 분할할 때 사용합니다. 걀과는 CStringArray 로 전달됩니다.
그리고 return 은 분할 된 개수입니다.

* 사용법
CStringArray protocol_array;
m_util.Split(card_confirm_protocol, '*', protocol_array);
    AfxMessageBox(protocol_array[0]);

아주 쉽죠..

* 문자열의 split

int Util::Splits(CString string, CString sep, CStringArray& array)
{

int nCount = 0;
while (string.GetLength() > 0){
int Pos = string.Find(sep);
if (Pos != -1){
array.Add(string.Left(Pos));
string = string.Mid(Pos + sep.GetLength());
nCount++;
if(string.IsEmpty()){
array.Add("");
nCount++;
}else{
array.Add(string);
string = "";
nCount++;
}
}
return nCount;

}

위 함수는 문자열을 분할할 때 사용합니다.
기존 인터넷에 설명이 나온것 중에 특정문자열에 대해 분할이 정상적으로 이루어 지지 않는 것들이 좀 있는데 
위 함수는 그것까지 정상처리되도록 작업이 된 함수입니다.


* 사용법

          CStringArray str_array; 

m_util.Splits(is_parm, "||||", str_array);
                AfxMessageBox(str_array[0]);


위 두 함수를 쌍으로 설정해 놓고 사용하시면 유연하게 사용하실 수 있습니다.

그럼~~










안녕하세요~~ 


드디어 티블로거가 되었습니다. 너무너무 고대하던 날이네요~ ^^


www.tistory.com 에서 초대장받기 를 통해서 여러 블로거님게 신청을 하였습니다.


근데 진짜 주실줄... ㅜ.ㅜ  


지나의일상(http://jinashenghwa.tistory.com) 님께서 주셨는데 너무 감사드려요..


앞으로 열심히 블로깅을 하도록 하겠습니다.


다른 분들도 초대장을 받고 싶으시면 꼭 지인을 통해서가 아니라 ...


www.tistory.com 에서 초대장받기 를 통해서서도 가능하다는 사실~~

'시스템' 카테고리의 다른 글

저의 블로그에서 C++ 은 VC++ 6.0 입니다.  (0) 2016.09.29




+ Recent posts