VB.NET で ini ファイルを読み書きしてみる
知り合いに頼まれたのでやってみた。
VB なんぞ生まれて初めて触る。
C# で .NET 齧ってるからいけるかと思ったが、やっぱ書き方、文法がやりづらかったw
.NET になってから、Ini ファイルが使われなくなってるなってるので、一番簡単な方法として、Win32API (早い話が Windows のAPI)叩く。
Imports System.Runtime.InteropServices Module Module1 <DllImport("KERNEL32.DLL")> _ Public Function WritePrivateProfileString( _ ByVal lpAppName As String, _ ByVal lpKeyName As String, _ ByVal lpString As String, _ ByVal lpFileName As String) As Integer End Function <DllImport("KERNEL32.DLL", CharSet:=CharSet.Auto)> _ Public Function GetPrivateProfileString( _ ByVal lpAppName As String, _ ByVal lpKeyName As String, _ ByVal lpDefault As String, _ ByVal lpReturnedString As String, _ ByVal nSize As Integer, _ ByVal lpFileName As String) As Integer End Function <DllImport("KERNEL32.DLL", CharSet:=CharSet.Auto)> _ Public Function GetPrivateProfileInt( _ ByVal lpAppName As String, _ ByVal lpKeyName As String, _ ByVal nDefault As Integer, _ ByVal lpFileName As String) As Integer End Function Sub Main() ' INI ファイルに設定値を書き込む(実行すると、ファイルができているはず) WritePrivateProfileString("default", "sample_key", "hello_world", "d:\sample.ini") WritePrivateProfileString("default", "sample_int", "256", "d:\sample.ini") ' INI から設定値を取り込んで表示する Dim readMessage As String = Space(255) GetPrivateProfileString("default", _ "sample_key", _ "None", _ readMessage, _ Len(readMessage), _ "d:\sample.ini") System.Console.WriteLine(readMessage) End Sub End Module
.NET は移植性なきゃだめなんだい!
と言う方は作ってください。
多分次の手順でできるんじゃない?
- 1行単位で読み込み
- セクションなら、辞書セットを新しくセクション名で辞書セット作る
- それ以外(値)なら、「=」で Split して Key=Value で辞書に書き込む。
とすれば、多分できるんじゃないかと思われ。
面倒なので作る気はなし、、、。