사용자 사용을 용이하게 하고 시스템을 유연하게 만들기 위해 대부분의 Windows 응용 프로그램은 사용자가 선택한 사항과 다양한 변경된 시스템 정보를 초기화(INI) 파일에 기록합니다. 따라서 시스템 환경이 바뀌어도 프로그램 수정 없이 INI 파일을 직접 수정할 수 있다. INI 파일은 시스템 기능에 매우 중요하다는 것을 알 수 있습니다. 이 기사에서는 Visual Basic for Windows(이하 VB)를 사용하여 Windows 응용 프로그램을 개발할 때 INI 파일을 읽고 쓰는 방법을 소개합니다.
INI 파일은 괄호로 묶인 각 제목 아래에 단일 단어와 등호로 시작하는 여러 개의 키워드(keyWord)로 구성된 텍스트 파일입니다. 함수에서 등호 오른쪽의 값은 키워드의 작동 모드를 지정합니다. 일반적인 형태는 다음과 같습니다.
[섹션1]
키워드1=값
키워드2=값2
…
[섹션2]
키워드1=값1
키워드2=값2
…
그 중 등호 오른쪽에 아무것도 없는 경우(즉, 값이 비어 있는 경우)는 Windows 응용 프로그램에서 키워드(또는 전체 부분)에 대해 기본값을 지정했음을 의미합니다. 전체 파일에서 찾을 수 없습니다. 즉, 기본값이 지정되어 있음을 의미합니다. 각 부분 내의 키워드 순서와 마찬가지로 부분이 나타나는 순서는 중요하지 않습니다.
일반적으로 INI 파일을 읽고 쓰는 방법에는 두 가지가 있습니다. 하나는 Windows에서 "메모장"을 사용하여 편집하는 것입니다. 이는 비교적 간단하고 추가 설명이 필요하지 않습니다. 다른 하나는 일반적으로 Windows 응용 프로그램을 사용하여 INI 파일을 읽고 쓰는 것입니다. 애플리케이션 실행 애플리케이션이 종료될 때 INI 파일의 정보가 읽혀지며, 애플리케이션이 종료될 때 사용자가 실행 중인 환경에 대해 수행한 특정 수정 사항이 저장됩니다.
키워드의 값 유형은 대부분 문자열 또는 정수이며 두 가지 상황에서 읽고 써야 합니다. 프로그램을 유지 관리하고 이식 가능하게 만들려면 INI 파일 읽기 및 쓰기를 모듈(RWINI.BAS)에 캡슐화하고 GetIniS 및 GetIniN 기능은 물론 RWI-NI.BAS에 SetIniS 및 SetIniN을 구성하는 것이 가장 좋습니다. . 프로세스를 수행하려면 이러한 기능 및 프로세스에서 Windows API의 "GetPRivateprofileString", "GetPrivateProfileInt" 및 "WritePrivateProfileString" 기능을 사용해야 합니다.
RWINI.BAS 모듈의 프로그램 코드는 다음과 같습니다:
일반 선언 섹션에 사용되는 Windows API 함수를 선언합니다.
DeclareFunctionGetprivateprofileStringLib"Ker-nel"(ByVallpAppNameAsString, ByVallpKeyNameAsString, ByVallpDefaultAsString, ByVallpRetrm-StringAsString, ByValcbReturnStringAsInteger, ByValFilenameAsString)AsInteger
DeclareFunctionGetPrivatePfileIntLib"커널"(ByVallpAppNameAsString, ByVallpKeyNameAsString, ByVallpDefaultAsInteger, ByValFilenameAsString)AsInteger
DeclareFuncitonWritePrivateprofileStringLib"커널"(ByVallpapplicationNameAsString, ByVallpKeyNameAsString, ByVallpStringAsString, ByVallplFileNameAsString)AsInteger
FunctionGetIniS(ByValSectionNameAsString, ByValKeyWordAsString, ByValDefStringAsString)AsString
DimResultStringAsString*144,TempAsInteger
DimsAsString, iAsInteger
Temp=GetPrivateProfileString(SectionName,KeyWord,"",ResultString,144,AppProfileName())
'키워드 값을 검색합니다.
IfTemp>0Then'키워드 값이 비어 있지 않습니다.
s=""
포리=1To144
IfAsc(Mid$(ResultString,I,1))=0Then
종료 대상
또 다른
s=s&Mid$(결과문자열, I, 1)
종료
다음
또 다른
임시=WritePrivateProfilesString(섹션 이름,KeyWord,DefString,ppProfileName())
'INI 파일에 기본값 쓰기
s=DefString
종료
GetIniS=s
EndFunction
FunctionGetIniN(ByValSectionNameAsString, ByValKeyWordAsString, ByValDefValue
AsIneger)AsInteger
DimdAsLong,sAsString
d=기본값
GetIniN=GetPrivateProfileInt(섹션 이름,
키워드,DefValue,ppProfileName())
Ifd<>DefValueThen
s=""&d
d=WritePrivateProfileString(섹션 이름,
키워드,s,AppProfileName())
종료
EndFunction
SubSetIniS(ByValSectionNameAsString, BtVaKeyWordAsString, ByValValStr
AsString)
딤레스
res=WritePrivateprofileString(SectionName,KeyWord,ValStr,AppProfileName())
EndSub
SubSetIniN(ByValSectionNameAsString, ByValKeyWordAsString, ByValValInt
정수로)
딤레스,s$
s$=Str$(발인트)
res=WriteprivateProfileString(SectionName,KeyWord,s$,AppProfileName())
EndSub
SectionName은 각 섹션의 제목, KeyWord는 키워드, GetIniS와 GetIniN의 DefValue는 키워드의 기본값, SetIniS와 SetIniN의 ValStr과 ValInt는 INI 파일에 쓸 키워드의 값입니다. 위의 기능과 절차를 사용하는 방법을 더 잘 설명하기 위해 아래에 두 가지 예가 나와 있습니다.
예시 1:
응용 프로그램을 개발하려면 일반적으로 데이터베이스 및 기타 파일을 사용해야 합니다. 이러한 파일의 디렉터리(경로 및 파일 이름 포함)는 프로그램에서 고정되어서는 안 되며 프로그램이 실행될 때 INI 파일에서 읽혀지는 INI 파일에 저장되어야 합니다. 달리기. 데이터베이스 파일을 읽는 코드는 다음과 같습니다.
DimDatabasenameAsString
데이터베이스 이름=GetIniS("데이터베이스", "직원", "")
IfDatabaseName=""ThenDatabaseName=InputBox(""직원" 데이터베이스의 디렉터리를 입력하십시오),
App.Title)'은 "파일 대화 상자"를 통해서도 선택할 수 있습니다.
OnErrorResumeNext
Setdb=OpenDatabas(데이터베이스 이름)
IfErr<>0그러면
MsgBox "데이터베이스를 열지 못했습니다!", MB-
ICONSTOP,App.Title:GotoErrorProcessing
또 다른
SetIniS"데이터베이스","직원",데이터베이스 이름
종료
OnErrorGoTo0
…
예시 2:
사용자 작업을 용이하게 하기 위해 창의 높이 및 너비와 같은 사용자 인터페이스의 특정 정보를 저장해야 하는 경우가 있습니다. 폼을 로드할 때 INI 파일에서 폼의 높이와 너비를 읽습니다. 폼을 언로드할 때 폼의 현재 높이와 너비를 INI 파일에 저장합니다. 코드는 다음과 같습니다.
하위양식1_로드()
…
Forml.Height=GetIniN("양식 1", "높이", 6000)
Form1.Width=GetIniN("Form1","높이",4500)
EndSub
…
하위양식1_Unload()
…
SetIniN"Form1","높이",Me.Height
SetIniN"Form1,"너비",Me.Width
…
EndSub->