프로그래밍할때 환경 설정 파일을 다루는 방법은 여러가지가 있지만, 역기 그 중에 가장 간단한 것은 ini 파일을 만들어서 텍스트로 관리하는 것이다.
VB 는 간단하게 API 를 제공하는데...
그냥 간단히, "WritePrivateProfileString Lib kernel32" 를 참조하고.
WritePrivateProfileString() 로 쓰면된다.
저렇게 만들고 버튼을 클릭해 실행해 보면...
위에서 지정한 AppName 인 "Config" 가 [Config] 라는 구분자로 설정값을 등록해 놓았음을 볼 수있다.
만약 AppName 인 "Config" 가 아닌 다른 값을 지정하면 같은 파일 안에서 서로다른 설정값 그룹을 만들수도 있다.
이렇게 괄호 [] 로 구분된 서로 다른 설정값 그룹을 생성해 관리 할 수도 있다.
이 말은 같은 ini 파일에 있다고 해도 설정값 그룹이 다른면 다른 그룹의 값은 읽을 수 없다는 얘기 이므로 설정 값을 읽거나 쓸때 지정된 그룹에 주의 해야 한다.
그리고 위의 예제보다는 일반적으로 공통 모듈을 만들어 쓰는 것이 일반적이다.
Private 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
Private 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
Public Function gINIRead(sSession As String, sKey As String, sINIFile As String, Optional ByVal sDefault As String = "") As String
Dim lngRet As Long
Dim strValue As String * 1024
lngRet = GetPrivateProfileString(sSession, sKey, sDefault, strValue, 1024, App.path & "\" & sINIFile)
gINIRead = Left(strValue, InStr(strValue, Chr(0)) - 1)
End Function
Public Function gINIWrite(sSession As String, sKey As String, sData As String, sFileDir As String, sINIFile As String) As Boolean
Dim lngRet As Long
Dim sFilePath As String
If sFileDir = "" Then
sFilePath = App.path & "\" & sINIFile
Else
sFilePath = sFileDir & "\" & sINIFile
End If
lngRet = WritePrivateProfileString(sSession, sKey, sData, sFilePath)
If lngRet = 0 Then
gINIWrite = True
Else
gINIWrite = False
End If
End Function
이렇게 모듈을 만들어 놓으면...
strPort = gINIRead(AppName, "Port", "Config.INI", "0")
Call gINIWrite("TIME", AppName, sTime, sDir, "Config.INI")
이렇게 간략하게 읽고 쓸수가 있다.