設定ファイルを読み込むクラス(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"
応援してやろうということで、お気持ちをいただければ嬉しいです。もっと勉強したり、調べたりする糧にしたいと思います。