매크로

정보
2015.07.20 16:30

INI 를 쉽게 사용해봅시다.

조회 수 748 추천 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
분류 제목 글쓴이 최근변경 추천
질문 블루스택 활성화 질문 드립니다. 11 colt 2022.12.14 0/0
질문 질문 드립니다. 굽신굽신 (--)(__)(--) ~♡♡♡♡♡♡ 5 제발등업좀2 2022.12.14 0/0
질문 오토핫키 변수 변경 질문드려요~ 1 아기수다리 2022.12.14 0/0
자유 오토핫키 정말 물건인것같아요 3 뫙치 2022.12.14 0/0
질문 블루스택 세븐나이츠 비활성 질문드립니다 8 아키만점 2022.12.14 0/0
질문 gui를 이용해서 메크로실행창을 만들어봣는데...저는왜... 4 토고얌세나 2022.12.14 0/0
질문 DDL 질문 5 아잉뿌잉 2022.12.14 0/0
질문 순차적실행 3 세나블텍 2022.12.14 0/0
질문 [해결] 아래 작동중지에 대한 수정소스인데요. 8 마토깽 2022.12.14 0/0
질문 텍스트를 가져오고 싶습니다. 6 _Crash 2022.12.14 3/0
질문 혹.. CSS 나 자바스크립트 관련 .. 초보 싸이트 좋은데... 2 제발등업좀2 2022.12.14 0/0
질문 [해결]소스완성하고 매크로 동작 테스트 중인데요... 13 마토깽 2022.12.14 0/0
질문 세나 30렙 확인 ..아이디어좀 주세요^^ 5 사과좋아 2022.12.14 0/0
질문 게임메크로에대해ㅐ 조금 지식이있는분 한번만 읽어봐... 10 토고얌세나 2022.12.14 0/0
질문 controlclick 명령어를 사용하는데 커서쪽도 클릭을 합... 4 아키만점 2015.07.23 0/0
질문 미치겠습니다 오토핫키 강좌를보며 배워가는중입니다 ... 14 토고얌세나 2015.07.22 0/0
질문 메이플 2는 오토핫키가 안먹히나요? 3 알슨 2015.07.21 0/0
질문 오토핫키 처음써보는데 단축키 질문좀요 6 지녀미 2015.07.21 0/0
정보 INI 를 쉽게 사용해봅시다. 11 모바게 2017.11.01 3/0
질문 DuOS 질문 1 김프로 2015.07.20 0/0
Board Pagination Prev 1 ... 153154155156157158159160161 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글