매크로

정보
2015.07.20 16:30

INI 를 쉽게 사용해봅시다.

조회 수 744 추천 3 댓글 11

출처 : http://www.autohotkey.com/board/topic/19650-auto-readload-and-save-an-ini-file-updated/


ini read, write 에 대해서 쉽게 접근하기 힘든 분들과,

ini를 쉽게 사용하는 분들이라도 귀찮은 부분이 있습니다.

.. 이 스크립트를 사용하면 쉽게 그리고, 귀찮은 부분을 해결할 수 있을 것 같습니다.

선택저장이 안된다는 단점이 있습니다.


일단 소스부터 나갑니다.

/*

INI_Init(inifile)     ;prepares the global variables to be populated

INI_Load(inifile)     ;Reads all the settings into the global variables from the file

INI_Save(inifile)     ;Saves all the settings from the global variables into the file


INI_ReadAll(inifile)  ;Synonym for INI_Load

INI_WriteAll(inifile) ;Synonym for INI_Save


*/

INI_Init(inifile = "inifile.ini"){

  global

  local key

  inisections:=0


  loop,read,%inifile%

  {

    if regexmatch(A_Loopreadline,"\[(\w+)]")

      {

        inisections+= 1

        section%inisections%:=regexreplace(A_loopreadline,"(\[)(\w+)(])","$2")

        section%inisections%_keys:=0

      }

    else if regexmatch(A_LoopReadLine,"(\w+)=(\w+)")

      {

        section%inisections%_keys+= 1

        key:=section%inisections%_keys

        section%inisections%_key%key%:=regexreplace(A_LoopReadLine,"(\w+)=(.*)","$1")

      }

  }

}


INI_readAll(inifile="inifile.ini"){

  INI_load(inifile)

}


INI_load(inifile="inifile.ini"){

  global

  local sec,var

  loop,%inisections%

    {

      sec:=A_index

      loop,% section%a_index%_keys

        {

          var:=section%sec% "_" section%sec%_key%A_index%

          iniread,%var%,%inifile%,% section%sec%,% section%sec%_key%A_index%

        }

    }

}


INI_writeAll(inifile="inifile.ini"){

  INI_Save(inifile)

}


INI_Save(inifile="inifile.ini"){

  global

  local sec,var

  loop,%inisections%

    {

      sec:=A_index

      loop,% section%a_index%_keys

        {

          var:=section%sec% "_" section%sec%_key%A_index%,var:=%var%

          iniwrite,%var%,%inifile%,% section%sec%,% section%sec%_key%A_index%

        }

    }

}



위의 소스가 전부입니다.

사용방법은

스크립트 시작할때 : INI_Init( ini파일명 ) - 최초 1번만

ini를 불러올때 : INI_Load( ini파일명 )

ini를 저장할때 : INISave( ini파일명 )

이게 끝입니다.


예제를 위해 inifile.ini 를 아래와 같이 만들겠습니다.

[Options]

font=Vernda


[Window]

positionX=100

positionY=100


위 ini 파일의 변수는 INI_Init, INI_Load 를 하게되면 글로벌 변수로

Options_font = Vernda

Window_positionX = 100

Window_positionY = 100

이렇게 저장됩니다.


만약 Options_font 의 내용을 변경후 INI_Save를 하게 된다면, 자동적으로 ini 파일의 내용이 변경됩니다.

아래 예제 남깁니다.

inifile = inifile.ini


;here is where we use our new user library functions.

INI_Init(inifile)

INI_Load(inifile)


Gui, Add, Text, , Options_font

Gui, Add, Edit, vOptions_font, % Options_font

Gui, Add, Button, gSave, 저장

Gui, Add, Button, gRestart, 재시작

Gui, Show, x%Window_positionX% y%Window_positionY% w150 h130

Return


GuiClose:

WinGetPos, Window_positionX, Window_positionY

INI_Save(inifile)

ExitApp

Return


Save:

Gui, Submit, NoHide

INI_Save(inifile)

MsgBox, 저장완료

Return


Restart:

WinGetPos, Window_positionX, Window_positionY

INI_Save(inifile)

Reload


예제의 기능은 Options_font 저장, Gui 위치 저장입니다.







  • 구피기르기 2015.07.20 17:13
    언제나좋은자료 감사히 잘쓰겠습니다
  • profile
    외치기 2015.07.20 17:13

    오 이거 되게 편해보이네요.

    한창 ini사용할때 변수하나씩 다 코드로 적어주는게 무척이나 귀찮았는데 ㅋㅋ

  • 제발등업좀2 2015.07.20 20:33
    멋지시네요. ㅋㅋ 몇개는 알아먹고 몇개는 뭔말인지..ㅋ 암튼 감사합니다.. 전 로드 세이브 귀찮아서.. 배열를 루프돌려서.. 했는데.. 정말편하겠네요.. 한줄이면 로드 세이브가 되니.. 정말 유용한 소스인듯싶습니다.. 요런건 추천이리 배웠습니다.
  • 제발등업좀2 2015.07.20 21:46
    정말좋은 소스네요.. 정규식 으로표현하는방법도있고.. 웹파싱할때 쓰는 구분도 보이고.. 내일 자세히 파악좀해봐야겠네요 많은 도움이 될듯.. 정말감사합니다.
  • 모바게 2015.07.21 13:44
    그냥 파일을 한줄한줄 읽어서
    [ ] 표시가 있으면 섹션.. 아니면 키/밸류로 읽고 저장하는거에요 ㅋ
  • 제발등업좀2 2015.07.21 17:08
    어떻게 이런 생각을 하신건지 ㅋㅋ.. 대단할뿐입니다 ㅎㅎ
  • 모바게 2015.07.21 18:25
    제가 만든건 아니고 ㅋㅋ
    만들까 했는데 찾아보니 있어서.. 가져온거에요 ㅋㅋㅋ
  • 이네 2015.08.04 19:29

    좋은자료 감사합니다~

  • 홍삼액기쓰 2015.08.28 10:14

    좋은정보 감사합니다!

  • 최원태 2015.10.25 16:55

    새내기로써는 윈도우 좌표부분만 이해하고 v라벨 저장하고 불러오는 곳을 해석이 전혀 안되네요 ㅠㅠ 좋은정보  감사합니다 좀더 공부하고 다시 와야겠어요

  • 오토초좁 2017.11.01 16:06

    좋은 자료 감사합니다


List of Articles
분류 제목 글쓴이 최근변경 추천
자유 블루스택과 녹스에서 히트 돌릴때 색상차이 8 와이로 2017.11.09 4/0
정보 간단한 방법으로 길오아 오토핫키를 만들어보세요^^ 21 럭셔리형아 2018.02.07 4/0
정보 MS오피스 스타일 GUI 프로토타입 6 예지력1 2016.04.16 4/0
질문 오토핫키 에디터 제작. 9 프리헌터스 2015.09.11 4/0
정보 테일스타 내 포인트 조회기 16 와이로 2017.07.04 4/0
정보 팝업 알림, CleanNotify 3 예지력1 2015.11.11 4/0
정보 브레이브 헌터 ... 매크로.. 1 제발등업좀2 2015.07.10 4/0
자유 비활성이미지서치 중간정리(disp,adb) 11 우후훅 2017.04.03 4/0
정보 블루스택 해상도 변경하기... 10 로뎀나무 2015.04.15 4/0
자유 [AutoPM Ver 1.58] 포켓메이플스토리 매크로 8 은다 2015.04.25 4/0
정보 초보가 초보에게;; 핫키 사용법 8 악동주성 2016.09.03 4/0
질문 매크로좀 오랜만에 다시보고자 접속을... 7 joeypre 2021.09.27 3/0
자유 오랜만에 글남깁니다 ㅋ. 매우많이.. 늦었지만 복들 ... 3 제발등업좀2 2016.01.10 3/0
정보 앱아이콘 터치없이 adb로 앱 실행 시키는 방법 18 와이로 2021.01.23 3/0
정보 오토핫키를 간단히 쓰고싶지만 너무 어렵다고 느낄때 9 HyunsD 2018.02.07 3/0
정보 제가 쓰는 픽셀피커입니다(스크립트) 6 와이로 2017.02.11 3/0
정보 지니모션 디바이스(타이틀) 검색 ddl 소스 9 핸콕 2015.10.11 3/0
질문 텍스트를 가져오고 싶습니다. 6 _Crash 2022.12.14 3/0
정보 INI 를 쉽게 사용해봅시다. 11 모바게 2017.11.01 3/0
정보 DynaScript - Child 프로세스로 코드 실행 13 예지력1 2019.07.16 3/0
Board Pagination Prev 1 2345678910 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글