見出し画像

設定ファイルを読み込むクラス(VB.net)

 プログラムで使う設定を外部ファイルに置きたい場合に使うクラスです。外部ファイルに書いておくと設定を変えるときにプログラムを書き換えずに済みます。
 実行ファイル(ex. XYZ.exe)と同じパスの同じ名前(ex. XYZ.ini)のファイルを読み込んで、KeyWordクラスにあるPublic変数に値を入れるようにしてあります。
 設定ファイルはエディタで作成、修正してください。

以上。

Imports System.IO

Public Class Config
    Private fileIniName As String
    Private scfg() As String

    Public Sub New()
        fileIniName = KeyWord.fileIniName()
        SetDefault()
        ReadConfig()
        SetConfig()
    End Sub

    Private Sub ReadConfig()
        If File.Exists(fileIniName) Then
            Form1.Disp("設定ファイルを読込みます。" + fileIniName)
            Dim rf As New ReadFile(fileIniName, "shift_jis")
            scfg = Split(rf.Read, vbCrLf)
        Else
            Form1.Disp("設定ファイルがありません。" + fileIniName)
        End If

    End Sub

    Private Sub SetConfig()

        For Each s As String In scfg
            Dim wd As String
            Dim val As String
            Dim ss() As String = Split(s, "=")
            If ss.Length >= 2 Then
                wd = (RejDQ(ss(0))).ToLower
                val = RejDQ(ss(1))
            Else
                Continue For
            End If

            Select Case wd
                Case NameOf(KeyWord.pathA).ToLower
                    (KeyWord.pathA = val
                Case NameOf(KeyWord.pathB).ToLower
                   KeyWord.pathB = val
                Case NameOf(KeyWord.fileCSVA).ToLower
                    KeyWord.fileCSVA = val
                Case NameOf(KeyWord.fileCSVB).ToLower
                    KeyWord.fileCSVB = val
                Case Else

            End Select
        Next
    End Sub

    Private Function RejDQ(s As String) As String
        Dim s1 As String = s

        ' コメント部分「'」以降を取り除く
        Dim indx As Integer = s1.IndexOf("'")
        If indx >= 0 Then
            s1 = s1.Substring(0, indx)
        End If

        ' 両側の""を取る
        s1 = Trim(s1)
        Dim s2 As String = s1
        If s1.Substring(0, 1) = """" Then
            If s1.Substring(s1.Length - 1) = """" Then
                s2 = s1.Substring(1, s1.Length - 2)
            End If
        End If
        Return s2
    End Function

    Private Sub SetDefault()
        '設定する値
     	pathA = "C:\users\hoge\Documents\fuga1"
     	pathB = "C:\users\hoge\Documents\fuga2"
     	fileCSVA = "hogaA.csv"
     	fileCSVB = "fumoB.csv"

    End Sub

End Class

Public Class KeyWord

    '設定する値
    Public Shared pathA As String
    Public Shared pathB As String
    Public Shared fileCSVA As String
    Public Shared fileCSVB As String

    '内部規定値
    Public Const fileExt As String = ".ini"

    '設定ファイルのフルパスを作成
    Public Shared Function fileIniName() As String
        Dim fullname As String = Application.ExecutablePath
        Dim fileBase As String = Path.GetFileNameWithoutExtension(fullname)
        Dim fullpath As String = Path.GetDirectoryName(fullname)
        Dim ret As String = fullpath + "\" + fileBase + fileExt
        Return ret
    End Function

End Class
'設定ファイル
''」以降はコメント
' 変数名 = 値
pathA = "d:\aaa"  'パスA
pathB = "e:\temp" 'パスB
fileCSVA = "aaa.csv 'csvファイルA"
fileCSVB = "bbb.csv 'csvファイルB"

#VB .net, #設定ファイル

応援してやろうということで、お気持ちをいただければ嬉しいです。もっと勉強したり、調べたりする糧にしたいと思います。