매크로

정보
2015.07.20 16:30

INI 를 쉽게 사용해봅시다.

조회 수 803 추천 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
분류 제목 글쓴이 최근변경 추천
정보 (안내) 글내용확인하시고 자삭하세요 27 snf 2015.02.23 0/0
정보 (펌)픽셀서치를 대체할 수 있는 비활성픽셀칼라 활용 ... 6 앙꼬호빵 2019.05.26 0/0
정보 adb 관련 비활성화 이미지 서치 쉽게하기 6 운하파는 2016.07.02 1/0
정보 adb를 이용한 연속 터치 및 키입력 TIP 7 하연데디 2019.03.05 1/0
정보 AHK_Helper.exe 오토핫키 도움말 프로그램 입니다. 2 월드걸스 2023.02.24 0/0
정보 Array 확장 13 모바게 2015.07.16 3/0
정보 Autohotkey에서 함수와 ByRef 사용에 대해... 12 류Macro 2015.07.12 1/0
정보 ControlSend 명령을 이용한, 카톡으로 알림받기 간단하... 10 죠케빈 2018.01.02 0/0
정보 DllCall "mouse_event" 속도조절하는 법 rkfdma 2016.12.08 0/0
정보 DynaScript - Child 프로세스로 코드 실행 13 예지력1 2019.07.16 3/0
정보 gdip 간단 응용 팁들 13 매크로맨서 2015.04.18 0/0
정보 gdip 비활성 이미지 서치, postmessage 모모 소스입니다. 6 사이다업 2021.01.23 1/0
정보 Gdip_all.ahk를 이용한 Bitmap의 size 변경 함수 6 할거엄따구 2022.12.14 1/0
정보 Gdip를 이용한 클립보드에 있는 이미지를 통한 이미지서치 11 암드래 2016.07.19 0/0
정보 GUI - 파일(폴더) 목록을 DropDownList로 만들기 14 모바게 2016.06.13 3/0
정보 Gui- dropdownlist 사용하기 기초내용 (모르시는 분만 ... 3 으뜸어린이 2017.09.07 1/0
정보 g라벨? v라벨? 설명좀해주세요 5 이리오리오 2016.10.25 0/0
정보 INI 를 쉽게 사용해봅시다. 11 모바게 2017.11.01 3/0
정보 ListBox로 로그창을 만들어보자! 고음l 2017.11.18 1/0
정보 List에 해당하는 GUI 팁 9 외치기 2015.08.24 2/0
Board Pagination Prev 1 23456 7 Next
/ 7

전체 최신 인기글

전체 주간 인기글