Untuk memudahkan penggunaan pengguna dan membuat sistem fleksibel, sebagian besar aplikasi Windows mencatat pilihan yang dibuat oleh pengguna dan berbagai informasi sistem yang diubah dalam file inisialisasi (INI). Oleh karena itu, ketika lingkungan sistem berubah, file INI dapat dimodifikasi secara langsung tanpa mengubah program. Dapat dilihat bahwa file INI sangat penting untuk fungsionalitas sistem. Artikel ini akan memperkenalkan cara membaca dan menulis file INI saat mengembangkan aplikasi Windows menggunakan Visual Basic untuk Windows (selanjutnya disebut VB).
File INI adalah file teks yang terdiri dari beberapa bagian. Di bawah setiap judul dalam tanda kurung, terdapat beberapa kata kunci (kata kunci) yang dimulai dengan satu kata dan tanda sama dengan. Setiap kata kunci mengontrol aspek tertentu dari aplikasi fungsi, nilai di sisi kanan tanda sama dengan menentukan mode pengoperasian kata kunci. Bentuk umumnya adalah sebagai berikut:
[bagian1]
kata kunci1=nilai
kata kunci2=nilai2
…
[bagian2]
kata kunci1=nilai1
kata kunci2=nilai2
…
Diantaranya, jika tidak ada apa pun di sisi kanan tanda sama dengan (artinya nilainya kosong), berarti aplikasi Windows telah menentukan nilai default untuk kata kunci tersebut tidak ditemukan di seluruh file, yang juga berarti bahwa nilai default ditentukan untuk file tersebut. Urutan kemunculan bagian tidak relevan, begitu pula urutan kata kunci dalam setiap bagian.
Biasanya ada dua cara untuk membaca dan menulis file INI: satu adalah dengan mengeditnya dengan "Notepad" di Windows, yang relatif sederhana dan tidak memerlukan penjelasan lebih lanjut; yang lainnya adalah dengan membaca dan menulis file INI dengan aplikasi Windows, biasanya dengan menjalankan aplikasi Informasi dalam file INI dibaca ketika aplikasi keluar, dan modifikasi tertentu yang dibuat oleh pengguna pada lingkungan yang sedang berjalan disimpan ketika aplikasi keluar.
Jenis nilai kata kunci sebagian besar berupa string atau integer, dan harus dibaca dan ditulis dalam dua situasi. Untuk membuat program dapat dipelihara dan portabel, yang terbaik adalah merangkum pembacaan dan penulisan file INI dalam sebuah modul (RWINI.BAS), dan membangun fungsi GetIniS dan GetIniN serta SetIniS dan SetIniN di RWI-NI.BAS . Proses, Anda perlu menggunakan fungsi "GetPRivateprofileString", "GetPrivateProfileInt" dan "WritePrivateProfileString" dari Windows API dalam fungsi dan proses ini.
Kode program modul RWINI.BAS adalah sebagai berikut:
Deklarasikan fungsi Windows API yang digunakan di bagian Deklarasi Umum:
DeklarasikanFunctionGetprivateprofileStringLib"Ker-nel"(ByVallpAppNameAsString, ByVallpKeyNameAsString, ByVallpDefaultAsString, ByVallpRetrm-StringAsString, ByValcbReturnStringAsInteger, ByValFilenameAsString)AsInteger
DeklarasikanFunctionGetPrivatePfileIntLib"Kernel"(ByVallpAppNameAsString, ByVallpKeyNameAsString, ByVallpDefaultAsInteger, ByValFilenameAsString)AsInteger
DeklarasikanFuncitonWritePrivateprofileStringLib"Kernel"(ByVallpapplicationNameAsString, ByVallpKeyNameAsString, ByVallpStringAsString, ByVallplFileNameAsString)AsInteger
FunctionGetIniS(ByValSectionNameAsString, OlehValKeyWordAsString, OlehValDefStringAsString)AsString
DimResultStringAsString*144,TempAsInteger
DimsAsString, iAsInteger
Temp=GetPrivateProfileString(SectionName,KeyWord,"",ResultString,144,AppProfileName())
'Ambil nilai kata kunci
IfTemp>0Then'nilai kata kunci tidak kosong
s = ""
Fori=1Ke144
IfAsc(Mid$(ResultString,I,1))=0Lalu
KeluarUntuk
Kalau tidak
s=s&Pertengahan$(String Hasil, I, 1)
AkhirJika
Berikutnya
Kalau tidak
Temp=WritePrivateProfilesString(nama bagian,Kata Kunci,DefString,ppProfileName())
'Tulis nilai default ke file INI
s=String Def
AkhirJika
DapatkanIniS=s
Fungsi Akhir
FunctionGetIniN(ByValSectionNameAsString, OlehValKeyWordAsString, OlehValDefValue
AsIneger)SebagaiInteger
DimdAsLong,sAsString
d=Nilai Def
GetIniN=GetPrivateProfileInt(NamaBagian,
Kata Kunci, DefValue, ppProfileName())
Ifd<>DefValueThen
s=""&d
d=WritePrivateProfileString(NamaBagian,
Kata Kunci,s,AppProfileName())
AkhirJika
Fungsi Akhir
SubSetIniS(ByValSectionNameAsString, BtVaKeyWordAsString, OlehValValStr
SebagaiString)
redup
res=WritePrivateprofileString(NamaBagian,Kata Kunci,ValStr,NamaProfilAplikasi())
Sub Akhir
SubSetIniN(ByValSectionNameAsString, OlehValKeyWordAsString, OlehValValInt
Sebagai Bilangan Bulat)
Dimres,s$
s$=Str$(ValInt)
res=WriteprivateProfileString(NamaBagian,Kata Kunci,s$,NamaProfileAplikasi())
Sub Akhir
SectionName adalah judul setiap bagian, KeyWord adalah kata kuncinya, DefValue di GetIniS dan GetIniN adalah nilai default kata kuncinya, dan ValStr dan ValInt di SetIniS dan SetIniN adalah nilai kata kunci yang akan ditulis ke file INI. Untuk mengilustrasikan dengan lebih baik cara menggunakan fungsi dan prosedur di atas, dua contoh diberikan di bawah ini.
Contoh 1:
Mengembangkan aplikasi biasanya memerlukan penggunaan database dan file lainnya. Direktori file ini (termasuk jalur dan nama file) tidak boleh diperbaiki dalam program, tetapi disimpan dalam file INI, yang dibaca dari file INI saat program dijalankan. berlari. Kode untuk membaca file database adalah sebagai berikut:
DimDatabasenameAsString
Nama Basis Data=GetIniS("database", "karyawan", "")
IfDatabaseName=""ThenDatabaseName=InputBox("Silakan masukkan direktori database "Karyawan"),
App.Title)' juga dapat dipilih melalui "File Dialog"
OnErrorResumeBerikutnya
Setdb=OpenDatabas(Nama Basis Data)
JikaErr<>0Lalu
MsgBox "Gagal membuka database!", MB-
ICONSTOP, Judul Aplikasi: GotoErrorProcessing
Kalau tidak
SetIniS"Database","Karyawan",NamaDatabase
AkhirJika
OnErrorGoTo0
…
Contoh 2:
Untuk memudahkan pengoperasian pengguna, terkadang perlu menyimpan informasi tertentu dari antarmuka pengguna, seperti tinggi dan lebar jendela. Saat memuat formulir, baca tinggi dan lebar formulir dari file INI. Saat membongkar formulir, simpan tinggi dan lebar formulir saat ini di file INI.
SubFormulir1_Beban()
…
Forml.Height=GetIniN("Formulir 1", "Tinggi", 6000)
Form1.Width=GetIniN("Form1", "Tinggi",4500)
Sub Akhir
…
SubFormulir1_Bongkar()
…
SetIniN"Form1", "Tinggi",Saya.Tinggi
SetIniN"Form1,"Lebar",Saya.Lebar
…
Sub Akhir->