[C#] ini環境ファイルを使う方法


Devlopment note / C#    作成日付 : 2020/04/22 00:09:39   修正日付 : 2020/04/22 00:09:39

こんにちは。明月です。


この投稿はC#でini環境ファイルを使う方法に関する説明です。


C#で一般的な環境ファイルはApp.configファイルのXMLファイルです。

link - [C#] 環境設定ファイルを扱う方法(System.Configuration)

iniファイルはC++でよく使う環境ファイルの構造です。

セッションがあり、キーでデータを取得する構造です。でもC#もC++ライブラリを使うことができるのでiniファイルを読み取りや書き込みができます。

Copy!
 [Source view] Program.cs
using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;
namespace Example
{
public static class ConfigSystem
{
// CのDLLライブラリのImport
[DllImport("kernel32")]
// 関数のパラメータはsection名、キー名、値、ファイルパス
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
// CのDLLライブラリのImport
[DllImport("kernel32")]
// 関数のパラメータはsection名、キー名、デフォルト値(sectionやキー、値がない場合、設定する値)、返却値(リターン値)、バッファサイズ、ファイルパス
private static extern int GetPrivateProfileString(string section, string key, string def, byte[] retVal, int size, string filePath);
// iniファイルを作成する関数
public static void WriteConfig(string file, string section, string key, string val)
{
WritePrivateProfileString(section, key, val, GetFile(file));
}
// iniファイルから値を取得する関数
public static string ReadConfig(string file, string section, string key)
{
// C# const char*はbyte配列に表現できる。
byte[] temp = new byte[1024];
// 値を取得
int ret = GetPrivateProfileString(section, key, null, temp, temp.Length, GetFile(file));
// iniは基本テキストファイル、ドキュメントフォーマットによるが、基本sjisだ。
return Encoding.Default.GetString(temp, 0, Array.IndexOf(temp, (byte)0));
}
// iniファイルパスを取得関数
private static string GetFile(string file)
{
// 事項するファイルのパス
return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, file + ".ini");
}
}
class Program
{
//実行関数
static void Main(string[] args)
{
// config.iniファイルに「SectionTest」セッションで「data」キーで「日本語」の値を格納する。
ConfigSystem.WriteConfig("config", "SectionTest", "data", "日本語");
// config.iniファイルに「SectionTest」セッションで「data」キーの値を取得する。
Console.WriteLine(ConfigSystem.ReadConfig("config", "SectionTest", "data"));
Console.WriteLine("Press any key...");
Console.ReadKey();
}
}
}

WritePrivateProfileStringとGetPrivateProfileStringはC#のライブラリではなく、C++のライブラリの「kernel32」の関数です。


実行関数でiniファイルを書き込んで読み取るので同然「日本語」という結果が出ます。

config.iniファイルを確認しましょう。



config.iniファイル中で[SectionTest]のdataのキーで「日本語」という値があります。

iniファイルはプログラムだけで操作することではなく、直接にセッションやキー、値を設定すると上のGetPrivateProfileStringの関数で読み込むのが可能です。


ここまでC#でini環境ファイルを使う方法に関する説明でした。


ご不明なところや間違いところがあればコメントしてください。

最新投稿