「 VS2015 」で「 INIファイル 」を扱う方法

最近は「Excel VBA」開発と「WordPress」でのWEBサイト製作のお話を頂くことが多いのですが、久々に「VB.NET」のお話を頂きました。

neuron

とあるチェーン店様の磁気カードを利用した会員システムで、カードリーダーNEURON様のリーダーを使用しています。こちらのリーダーは、付属のCDにサンプルが充実しているため、そちらを参考に簡単に開発を進めることが出来ました。

で、本題。今回頂いたお話が過去に「VB6.0」で開発されたアプリの踏襲で、これまで使用していた INIファイル を同じように扱いたいと言うことで、最近はXMLの方が主流なので使う機会は少ないかもしれませんが、メモがてら参考までに。

Win32APIを呼び出す

「GetPrivateProfileString」で値を取得、「WritePrivateProfileString」で値の書き込みを行います。

Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (
                ByVal lpApplicationName As String,
                ByVal lpKeyName As String,
                ByVal lpDefault As String,
                ByVal lpReturnedString As String,
                ByVal nSize As Integer,
                ByVal lpFileName As String) As Integer

Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (
                ByVal lpApplicationName As String,
                ByVal lpKeyName As String,
                ByVal lpString As String,
                ByVal lpFileName As String) As Integer

読み込むINIファイルの内容はこんな感じです。

[shop]
SHOPCODE=00001
Counter=1

こちらのINIファイル名を「MIPS.INI」とし、実行ファイルと同じフォルダに配置します。

INIファイルから値を読み込む

実際にINIファイルの内容を読み込みます。

Public Function GetIniStore() As String
    Const def As String = vbNullString
    Dim buff As String = New String(" ", 1024)
    Dim iniFile As String = Application.StartupPath & "\MIPS.ini"
    Dim ret As Integer = GetPrivateProfileString("SHOP", "SHOPCODE", def, buff, buff.Length, iniFile)
    Dim sVal As String = buff.Substring(0, buff.IndexOf(vbNullChar))
    Return sVal
End Function

Public Function GetIniCounter() As String
     Const def As String = vbNullString
     Dim buff As String = New String(" ", 1024)
     Dim iniFile As String = Application.StartupPath & "\MIPS.ini"
     Dim ret As Integer = GetPrivateProfileString("SHOP", "Counter", def, buff, buff.Length, iniFile)
     Dim sVal As String = buff.Substring(0, buff.IndexOf(vbNullChar))
     Return sVal
End Function
INIファイルに値を書き込む

続いて書き込み。

Public Sub WriteCounter(Item As String)
    Dim ret As Integer
    Dim iniFile As String = Application.StartupPath & "\MIPS.ini"
    Dim wItem As String = Item
    ret = WritePrivateProfileString("SHOP", "Counter", wItem, iniFile)
End Sub
とりあえず動かしてみる

とりあえず動かしてみます。ここまでのコードは「Module1.vb」として作成し、フォームにボタンを配置してみます。

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim ans As String = GetIniStore()
        MsgBox("店舗番号:" & ans)
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim ans As String = GetIniCounter()
        ans = ans + 1
        WriteCounter(ans)
        MsgBox("カウンターを増やしました。今のカウンターは" & ans & "です。")
    End Sub
End Class

応援よろしくお願いします。
いいね ! してもらえると嬉しいです。

Twitter で

自己紹介

インディーズでミュージシャンをやっていたのですがいつのまにか...

とある企業でショップのアルバイトスタッフから正社員、支店長を経てシステム部門に異動するという、開発担当としては変わった経緯を持っている方だと思います。

昨年の3月に結婚し、尻敷かれ男子の仲間入りを果たしました(笑)

現在勤めているJTクラウドシステムでは、「 Excel VBA 」を活用した効率化ツールの開発、「 WordPress 」を活用したWEBサイト、業務用WEBアプリケーション開発を中心に「 ネットワーク・サーバー構築 」や「 Office365製品の導入支援 」、最近は、ホームページ制作に加え、記事の執筆代行や掲載に必要な情報のリサーチ、テロップ入れや映像の切りはりなどの簡単な動画編集なども、まとめて行なっています。

お問い合わせはJTクラウドシステムホームページからお願いします。