Coding4ever’s Blog

Just coding… coding… and coding… because coding should be fun :)

Contoh Sederhana Memanipulasi INI File Untuk Menyimpan Informasi

| 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

1
2
3
4
5
6
7
8
[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

1
2
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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 :)

visual basic

Tentang Penulis

Software developer yang fokus mengembangkan aplikasi di atas platform .NET (Desktop, ASP.NET MVC, Web Service) dan Android. Senang mempelajari teknologi baru terutama di bidang OOP, Design Pattern, ORM, Database dan Continuous Integration & Deployment.
Saat ini bekerja sebagai staf IT di salah satu PTS di Yogyakarta sebagai senior software developer. Di waktu luang insya Alloh akan terus berbagi pengalaman di blog ini :)

« Smart Library School (Beta 2) Tips cara mengecek apakah Ms Excel sudah terinstall ? »

Comments