일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 사전설치
- 멀티바이트 문자 집합 사용
- SQLite3
- Mqtt
- OpenCPN
- git 최초 설정
- Flutter
- c++ Broadcast
- Plugins
- c++ set struct
- c2678
- LINK2001
- ExtendWith
- .gitattributes
- esp-wroom-32d
- Console
- wxWidget
- __vsnprintf
- 의존주입
- OpenXLSX 한글
- __snprintf
- winsock.h Broadcast
- 정적 라이브러리에서 MFC 사용
- sts4
- git 대용량 파일
- OpenCPN설치
- 확인할 수 없는 외부 기호
- MFC
- _sprintf
- 설치 테스트
- Today
- Total
세상을 이롭게
[winbase.h] ini 형식 파일 작성하기 본문
ini 파일이란? Initialization file 을 의미한다. 즉 프로그램의 실행 초기에 대한 정보를 담아놓는 파일이다.(목적과 다르게 정하는건 개발자의 마음)
https://ko.wikipedia.org/wiki/INI_%ED%8C%8C%EC%9D%BC
INI 파일 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. INI(Initialization) 파일 포맷은 설정 파일에 대한 de facto 표준이다. INI 파일은 단순 구조의 텍스트 파일로 이루어져 있다. 보통 마이크로소프트 윈도우와 연결되어
ko.wikipedia.org
ini 파일은 [섹션]과 매개변수 Key=Value 로 이루어진 파일이다. ;는 주석이다.
[AutoPilot] <- 섹션
AutoControl=1 <- 매개변수
; 0이면 check FALSE(defualt), 1이면 check TRUE로 지정한다.
이런식으로 작성 된다.
작성법을 알아보자.
본인은 F1을 자주 이용하는 편이다.
VisualStrudio에서 원하는 함수에 커서를 주고 F1을 누르면 관련 문서가 등장한다.
https://docs.microsoft.com/ko-kr/windows/win32/api/winbase/nf-winbase-writeprivateprofilesectiona
WritePrivateProfileSectionA function (winbase.h) - Win32 apps
Replaces the keys and values for the specified section in an initialization file.
docs.microsoft.com
Write와 관련된 함수부터 살펴본다.
A와 W의 차이는?(WinBase.h)에서 확인해보자.
#ifdef UNICODE
#define WritePrivateProfileString WritePrivateProfileStringW
#else
#define WritePrivateProfileString WritePrivateProfileStringA
#endif // !UNICODE
#ifdef UNICODE
#define GetPrivateProfileSection GetPrivateProfileSectionW
#else
#define GetPrivateProfileSection GetPrivateProfileSectionA
#endif // !UNICODE
그렇구나....
함수의 원형을 보면?
BOOL WriteProfileString( LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString );
BOOL WritePrivateProfileString( LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString, LPCTSTR lpFileName );
Private가 붙은 함수는 File경로이름을 갖고 있다는 것을 알 수 있다.
Private가 붙지 않은 함수를 쓰면 win.ini에 작성된다고 한다.
필요한 것만 사용할꺼니까, 위의 형식대로 넣고싶다면
WritePrivateProfileString(_T("AutoPilot"), _T("AutoControl"), 1, path);
이렇게 써주면 된다.
이때 만약 path에 ~~\\~~.dat 이렇게 적어놓았다면 dat 파일을 열어도 똑같이 써진다.
즉 ini파일형식으로 써줄 뿐, 확장자에 따라 달라지는 것이 아니라는 소리이다.
기록된 세션의 키 벨류를 지우고 싶다면 WritePrivateProfileString(_T("AutoPilot"), NULL,"", path);
이런식으로 덮어 써줄 수 있다.
또한 섹션과 키는 대소문자 구분을 하지 않는다.
*섹션이나 키가 존재하지 않는다면 새로 만들어진다. 그래서 거의 GetPrivateProfileSection 함수와 붙어다닌다.
DWORD GetPrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpDefault, LPTSTR lpReturnedString, DWORD nSize, LPCTSTR lpFileName)
UINT GetPrivateProfileInt(LPCTSTR lpAppName, LPCTSTR lpKeyName, INT nDefault, LPCTSTR lpFileName)
사용법
char Buffer[1023] = {0};
GetPrivateProfileString("Section","KeyName","default value",Buffer,sizeof(Buffer),path);
GetPrivateProfileInt("Section","KeyName",(int형)default value,path);
ex)
GetPrivateProfileString(_T("CONFIG"), _T("COUNT"), _T("0"), szData, 100, szIni);
WritePrivateProfileString(_T("CONFIG"), _T("COUNT"), szData, szIni);
'C,C++' 카테고리의 다른 글
[C++] LNK2001, LNK1120 Class static 사용시 문제 (0) | 2022.02.10 |
---|---|
VS MSB8008: 지정된 플랫폼 도구 집합(v142)이 설치되지 않았거나 올바르지 않습니다. (0) | 2021.11.29 |
VS Pointer Debugging (기초) (0) | 2021.11.29 |
VS LNK1104: 'kernel32.lib' 파일을 열 수 없습니다. (0) | 2021.11.25 |
[VS2019] 창 분할시 재시작 하는 문제 (0) | 2021.05.07 |