Contoh sederhana memanipulasi INI file untuk menyimpan informasi
Ada banyak cara untuk menyimpan informasi yang dibutuhkan oleh aplikasi, kita bisa menyimpannya di registry windows, database atau cukup dengan memanfaatkan file teks biasa dengan format INI file.
Contoh kita akan menyimpan beberapa informasi berikut :
serverName=informasi ip address server
dbPath=lokasi database server
Nama=Nama sekolah
Alamat=Alamat sekolah
Kota=Kota Sekolah
Berikut adalah contoh lengkap isi INI file yang berhubungan informasi di atas
[Sistem]
serverName=192.168.1.1
dbPath=D:\Proyek Eksternal\SmartLibrarySchool\Source\Db
[Sekolah]
Nama=SMU NEGERI YOGYAKARTA
Alamat=Jl. Pogung Dalangan
Kota=Yogyakarta
Untuk memudahkan kita menulis dan membaca file dengan format INI file kita membutuhkan 2 fungsi API yaitu :
- WritePrivateProfileString (menulis)
- GetPrivateProfileString (membaca)
Berikut deklarasi lengkap ke dua fungsi API tersebut
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
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
Jika langsung menggunakan ke dua fungsi API tersebut rasanya kurang nyaman, sehingga kita akan membuat 2 buah prosedur/fungsi dengan nama yang lebih manusiawi.
Private Function readINI(ByVal fileName As String, ByVal sectionHeader As String, ByVal variableName As String, ByVal strDefault As String) As String
Dim buffer As String
Dim x As Long
buffer = String(255, 0)
x = GetPrivateProfileString(sectionHeader, variableName, strDefault, buffer, 255, fileName)
If x <> 0 Then
buffer = Left$(buffer, x)
readINI = buffer
Else
readINI = ""
End If
End Function
Private Sub writeINI(ByVal fileName As String, ByVal sectionHeader As String, ByVal variableName As String, ByVal value As String)
Dim ret As Long
ret = WritePrivateProfileString(sectionHeader, variableName, value, fileName)
End Sub
Cara menggunakan ke dua fungsi/prosedur diatas cukup gampang, contoh :
Private Const FILE_INI As String = "konfig.ini"
Private Sub cmdTulisFileINI_Click()
Call writeINI(App.Path & "\" & FILE_INI, "Sistem", "serverName", "192.168.1.1")
Call writeINI(App.Path & "\" & FILE_INI, "Sistem", "dbPath", "D:\Proyek Eksternal\SmartLibrarySchool\Source\Db")
Call writeINI(App.Path & "\" & FILE_INI, "Sekolah", "Nama", "SMU NEGERI YOGYAKARTA")
Call writeINI(App.Path & "\" & FILE_INI, "Sekolah", "Alamat", "Jl. Pogung Dalangan")
Call writeINI(App.Path & "\" & FILE_INI, "Sekolah", "dbPath", "Yogyakarta")
End Sub
Private Sub cmdBacaFileINI_Click()
MsgBox "Server Name : " & readINI(App.Path & "\" & FILE_INI, "Sistem", "serverName", "") & vbCrLf & _
"DB Path : " & readINI(App.Path & "\" & FILE_INI, "Sistem", "dbPath", "")
End Sub
Contoh source code diatas dengan asumsi INI file (konfig.ini) disimpan difolder yang sama dengan aplikasi.
Selamat mencoba
Comments