LoginSignup
2

More than 5 years have passed since last update.

C++ Builder > ファイル処理検討 > 複数のプロファイルの切替え > _profファイルとdetailファイルでの読書き

Last updated at Posted at 2017-10-25
動作環境
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処理の実装。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2