Contoh sederhana memanipulasi INI file untuk menyimpan informasi

Posted by Kamarudin • 2 minute read • Comments

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 :blush:

Comments