動作環境
C++ Builder XE4
処理
複数のプロファイルに対して、以下の処理をする。
- プロファイル新規追加
- プロファイル切替
- 保存はしない
- プロファイル削除
- プロファイル保存
- 切替後の保存
- プロファイル詳細の保存
以下が関連する関数。自作のJSONの読書き処理を使用しているのだが、詳細は割愛する。
- Setting_load_profile()
- Setting_load_detail()
- Setting_save_profile()
- Setting_save_detail()
- Setting_delete_detail()
code
プロファイルと詳細の読書き処理は以下のようにした。
Unit1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <DBXJSON.hpp> // for JSON
#include <IOutils.hpp>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Setting_load_profile();
Setting_load_detail(E_profile->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Setting_load_profile(void)
{
// 割愛
}
void __fastcall TForm1::Setting_load_detail(String profName)
{
// 割愛
}
void __fastcall TForm1::Setting_save_profile(void)
{
// 割愛
}
void __fastcall TForm1::Setting_save_detail(String profName)
{
// 割愛
}
void __fastcall TForm1::Setting_delete_detail(String profName)
{
// 割愛
}
//---------------------------------------------------------------------------
void __fastcall TForm1::B_addProfileClick(TObject *Sender)
{
E_profile->Text = L"prof2"; // 新規プロファイル
E_detail->Text = L"Default"; // デフォルト詳細に戻す
//
Setting_save_profile();
Setting_save_detail(E_profile->Text);
}
void __fastcall TForm1::B_selectProfileClick(TObject *Sender)
{
E_profile->Text = L"prof1"; // 既存プロファイル
//
Setting_load_detail(E_profile->Text);
// 選択のみではプロファイル保存をしない
// (保存せずに閉じた時に選択前のプロファイルに戻すため)
}
void __fastcall TForm1::B_deleteProfileClick(TObject *Sender)
{
Setting_delete_detail(E_profile->Text); // 現在のプロファイルを削除 (例: prof1)
E_profile->Text = L"prof2"; // 既存プロファイルに切り替え
Setting_load_detail(E_profile->Text);
Setting_save_profile();
}
void __fastcall TForm1::B_saveProfileClick(TObject *Sender)
{
Setting_save_profile();
}
void __fastcall TForm1::B_saveDetailClick(TObject *Sender)
{
Setting_save_detail(E_profile->Text); // 現在のプロファイルに保存
}
//---------------------------------------------------------------------------
関連
C++ Builder > ファイル処理検討 > 複数のプロファイルの切替え > Setting.txtを経由する
にて考えていた処理よりはすっきりした。
JSON読書き処理のコードと組合せて、ある程度の動作確認は済んだ。
あとはUI処理の実装。