블로그에서 작성한 글을 가져왔습니다. 원본 글을 보려면 여기를 클릭하세요
오토핫키에서 값을 저장하고 불러오는 목적으로 .ini 파일을 사용할 수 있습니다
근데 단점은 너무 느리다는거죠, IniWrite으로 값을 저장할때 ~10개정도까지는 그렇다해도 양이 늘어나면 많이 느리다는걸 느끼실꺼에요
또한, 문법이 길고 FileName을 계속 지정해줘야 한다는 귀찮은 문제도 있겠네요
이러한 기존 Ini의 문제를 해결하고자 Verdlin 이 새로운 클래스를 만들어냈었습니다, 바로 Easyini
벤치마킹의 결과를 보시면 알겠지만, 기존 IniWrite 보다 1162% 더 빠릅니다
5만개의 값을 저장하는데 Easyini 클래스는 21초, IniWrite 은 4분 4초가 걸립니다
iAhkPID := DllCall("GetCurrentProcessId")
Process, Priority, iAhkPID, H
vIni := class_EasyIni("test.ini")
Loop 50000
{
if (!vIni.AddSection(A_Index, A_Index, A_Index, sError))
sErrors .= sError "`n"
} ; ~ 1초
vIni.Save() ; ~ 20초
Loop 50000
IniWrite, %A_Index%, IniWrite.ini, %A_Index%, %A_Index%
; ~ 4분 4초
return
}
또한 커스텀 클래스덕분에 네이티브 오브젝트처럼 접근해 사용할 수 있습니다
EasyIni 다운로드 \Lib 폴더에 저장하거나 #include 하세요
문법
; ini 오브젝트를 생성,설정하기
vIni := class_EasyIni("파일명.ini")
; 어레이(배열)로 받고싶을때
for section, aKeysAndVals in vIni
for key, val in aKeysInVals
vIni[Section][key] := 1
; 배열로 ini 값을 가져올때 (ini 파일을 파싱할때)
vIni[SectionName을 변수로 받음][KeyName을 변수로받음] := 값
; 가장 일반적인 방법, 기존 ini 문법하고 비슷하죠?
vIni.Section이름.Key이름:= 값
vIni.Section이름[Key이름 변수로받음] := 값
vIni[Section이름 변수로받음].Key이름:= 값
예제
MyName := "예지력"
; ini 파일 오브젝트 생성하기
vIni := class_EasyIni("TEST.ini")
vIni.Section1["키이름1"] := "설정값1"
vIni.Section1["키이름2"] := "설정값2"
vIni.Section2["키이름1"] := "설정값1"
vIni.Section2["키이름2"] := "설정값2"
vIni.Section3["이름"] := MyName
; 저장하기 - 스크립트 경로에서 'TEST.ini' 파일이 생성됨
vIni.Save()
; 확인 목적으로 ini 파일 열기
try
Run, TEST.ini
return
좋은정보 감사합니다..