INIファイルの読み書きに必要なコード

int型やfloat型の値をINIファイルに読み書きするには、stringに変換して保存し、読み出すときにintfloatに変換する方法が一般的です。以下にその実装例を示します。

INIファイルにintやfloatを読み書きする方法

まず、INIファイルの読み書きメソッドを修正して、データ型に応じたメソッドを追加します。

using System;
using System.Runtime.InteropServices;
using System.Text;

public class IniFile
{
private readonly string filePath;

public IniFile(string path)
{
filePath = path;
}

[DllImport("kernel32", CharSet = CharSet.Unicode)]
private static extern int GetPrivateProfileString(string section, string key, string defaultValue, StringBuilder retVal, int size, string filePath);

[DllImport("kernel32", CharSet = CharSet.Unicode)]
private static extern bool WritePrivateProfileString(string section, string key, string value, string filePath);

// 文字列の読み書きメソッド
public string ReadString(string section, string key, string defaultValue = "")
{
var result = new StringBuilder(255);
GetPrivateProfileString(section, key, defaultValue, result, result.Capacity, filePath);
return result.ToString();
}

public void WriteString(string section, string key, string value)
{
WritePrivateProfileString(section, key, value, filePath);
}

// int型の読み書きメソッド
public int ReadInt(string section, string key, int defaultValue = 0)
{
string result = ReadString(section, key, defaultValue.ToString());
return int.TryParse(result, out int value) ? value : defaultValue;
}

public void WriteInt(string section, string key, int value)
{
WriteString(section, key, value.ToString());
}

// float型の読み書きメソッド
public float ReadFloat(string section, string key, float defaultValue = 0.0f)
{
string result = ReadString(section, key, defaultValue.ToString());
return float.TryParse(result, out float value) ? value : defaultValue;
}

public void WriteFloat(string section, string key, float value)
{
WriteString(section, key, value.ToString());
}
}

使用例

var ini = new IniFile("settings.ini");

// int型の書き込みと読み込み
ini.WriteInt("Settings", "Volume", 75);
int volume = ini.ReadInt("Settings", "Volume");
Console.WriteLine($"Volume: {volume}");

// float型の書き込みと読み込み
ini.WriteFloat("Settings", "Brightness", 0.8f);
float brightness = ini.ReadFloat("Settings", "Brightness");
Console.WriteLine($"Brightness: {brightness}");

説明

  • WriteInt / ReadIntint型の値をstringに変換してINIファイルに書き込み、読み出すときにintに戻します。
  • WriteFloat / ReadFloatfloat型も同様にstringに変換して書き込み、読み出すときにfloatに戻します。

このようにすることで、INIファイルに数値データを簡単に保存し、読み込むことができます。

コメント

タイトルとURLをコピーしました