Iniファイルからデータを読み込んだり書き込んだりする関数にはTIniFileというクラスが用意されています。
整数値の読み込みや文字列の読み込みなど各種用意されていますが、私は使い分けるのが面倒なので、文字列としてすべて読み書きすることにし、数値が必要な場合は変換することにしています。
下記のようなサブルーチンを作っておくと、起動したアプリケーション名の拡張子を「ini」に変えたファイル名から読み書きができ、便利です。
読み込みはこんな感じ
AnsiString __fastcall subGetIni(AnsiString strSEC, AnsiString strKEY) { TIniFile *iniTMP; AnsiString strPATH, strTMP; AnsiString strRET; char bBUF[MAX_PATH]; try { // Iniファイル名を求める ::GetModuleFileName(::GetModuleHandle(NULL), bBUF, MAX_PATH); strPATH = AnsiString(bBUF); strTMP = ExtractFileExt(strPATH); strPATH.Delete(strPATH.Pos(strTMP), strTMP.Length()); strPATH += ".ini"; // Iniファイルを開く iniTMP = new TIniFile(strPATH); // 指定の値を読み込む try { strRET = iniTMP->ReadString(strSEC, strKEY, ""); } catch(...) { strRET = ""; } delete iniTMP; } catch(...) { strRET = ""; } return strRET; }
書き込みはこんな感じ
bool __fastcall subPutIni(AnsiString strSEC, AnsiString strKEY, AnsiString strDATA) { TIniFile *iniTMP; AnsiString strPATH, strTMP; char bBUF[MAX_PATH]; try { // Iniファイル名を求める ::GetModuleFileName(::GetModuleHandle(NULL), bBUF, MAX_PATH); strPATH = AnsiString(bBUF); strTMP = ExtractFileExt(strPATH); strPATH.Delete(strPATH.Pos(strTMP), strTMP.Length()); strPATH += ".ini"; // Iniファイルを開く iniTMP = new TIniFile(strPATH); // 指定の値を書き込む try { iniTMP->WriteString(strSEC, strKEY, strDATA); } catch(...) { delete iniTMP; return false; } delete iniTMP; } catch(...) { return false; } return true; }
#include <IniFiles.hpp>
が必要です。