Programming/Visual Basic

INI 파일 이용하기

bcheul 2006. 10. 20. 17:36
프로그램 개발시 변경되는 데이타의 정보를 담아두기 위해 ini 파일을 이용합니다.
비쥬얼베이직에서 API FUNCTION 을 이용하여 ini 파일에 데이타를 쓰고 읽는 방법
을 살펴보겠습니다.

1. ini 파일의 구조

 [AppName1]
 KeyName1=Value
 KeyName2=Value

 [AppName2]
 KeyName1=Value

AppName은 KeyName이 들어가는 일반화된 범주에 표시한다. AppName은 옵션인데
사용할 경우 각괄호([]) 안에 넣어야 하며 KeyName은 프로그램이 .ini 파일에서
읽거나 파일에 쓸 때 참조할 값에 대한 텍스트 참조에 해당한다. Value는 KeyName에
할당된 값을 표시한다.
문자열은 인용 부호 속에 넣을 필요는 없으며 숫자 값은 직접 입력한다.

2. WritePrivateProfileString Function 을 이용하여 ini 쓰기
  모듈에 다음의 API Function 을 선언한다

Public Declare Function WritePrivateProfileString Lib "kernel32" _
              Alias "WritePrivateProfileStringA" _
             (ByVal lpApplicationName As String, _
              ByVal lpKeyName As Any, _
              ByVal lpString As Any, _
              ByVal lpFileName As String) As Long

 인수               설명
 ----------------------------------------------------------------------------
 lpApplicationName    lpApplication Name 인수는 위의 (1)에서 설명한  ApplicationName 문자열에 해당한다.
 lpKeyName                 lpKeyName 인수는 위의 (1)에서 설명한 KeyName에 해당한다
 lpString                        lpString 인수는 위의 (1)에서 설명한 Value 문자열에 해당한다.
 lpFileName                lpFileName 인수는 참조중인 .ini파일의 완전히 규정된 경로와 파일 이름에 해당한다.
 ----------------------------------------------------------------------------

 사용법 : temp.ini 에서 내용쓰기
 temp.ini 파일구조
   [APPNAME]
   COUNT=10

Private Sub PutINIData()
   Dim strFile As String

   strFile = "temp.ini"
   WritePrivateProfileString "APPNAME", "COUNT", "20", strFile
End Sub

 위의 PutINIData Sub를 부르게 되면 ini 파일의 COUNT 값이
 COUNT=10 에서 COUNT=20 으로 변경됩니다.

3. GetPrivateProfileString Function 을 이용하여 ini 읽기
  모듈에 다음의 API Function 을 선언한다

Public Declare Function GetPrivateProfileString Lib "kernel32" _
              Alias "GetPrivateProfileStringA" _
             (ByVal lpApplicationName As String, _
              ByVal lpKeyName As Any, _
              ByVal lpDefault As String, _
              ByVal lpReturnedString As String, _
              ByVal nSize As Long, _
              ByVal lpFileName As String) As Long

 GetPrivateProfileString은 String 타입의 값을 리턴한다

 인수               설명
 ----------------------------------------------------------------------------
 lpApplicationName    lpApplication Name 인수는 위의 (1)에서 설명한 ApplicationName 문자열에 해당한다.
 lpKeyName                 lpKeyName 인수는 위의 (1)에서 설명한 KeyName에 해당한다
 lpDefault                      lpDefault 인수는 문자열에 대해 유지되는 디폴트 값에 해당한다. 일반적으로 프로그램은
                                       이 매개 변수를 사용하지  않는다.
 lpReturnedString       lpReturnedString 인수는 위의 (1)에서 설명한 Value문자열에 해당한다.
 nSize                            nSize 인수는 lpReturnedString 인수 내의 리턴된 문자열 길이에 해당한다.              
 lpFileName                 lpFileName 인수는 참조중인 .ini파일의 완전히 규정된 경로와 파일 이름에 해당한다.
 ----------------------------------------------------------------------------

 사용법 : temp.ini 에서 내용읽기
 
temp.ini 파일구조
   [APPNAME]
   COUNT=10

Private Sub GetINIData()
   Dim strFile As String
   Dim strTemp As String
   Dim intLen As Long
   Dim strCount As String

   strFile = "temp.ini"
   strTemp = String$(100, 0)

   intLen = GetPrivateProfileString("APPNAME", "COUNT", "0", strTemp, _
                                       Len(strTemp), strFile)
   strCount = Left$(strTemp, lntLen)
End Sub

위의 GetINIData Sub를 부르게 되면 strCount 변수에 10 이란 값이 들어가게 됩니다.
만약 파일에 COUNT란 항목이 없게되면 API Function의 세번째 필드의 "0" 이란 값이 대신
들어가게 됩니다.