アプリケーション開発において、データベース接続パラメータなどの設定情報を管理するために設定ファイルを作成するのは一般的な要件です。通常、TIniFileやレジストリオブジェクトを使用してこれらの設定を読み書きします。kbmMWは、より洗練された方法を提供し、コードの保守性を向上させます。
kbmMW Configuration Frameworkに不慣れな場合は、まず基本的な動作原理と使用方法を理解するために関連ドキュメントを参照してください:Configuration REST easy with kbmMW #7およびkbmMWConfigurationを使用したkbmmw smartserviceの最適化。
準備が整ったら、プロジェクトでカスタム設定オブジェクトを実装する方法を見ていきましょう。
第一歩:カスタム設定オブジェクトクラスの定義
TServerConfig = class(TkbmMWConfigurableObject)
private
[kbmMW_Config('ServerAddress',mwcdReadWrite)]
FAddress: string;
[kbmMW_Config('ServerPort',mwcdReadWrite)]
FPort: Integer;
public
property Address:string read FAddress write FAddress;
property Port:Integer read FPort write FPort;
end;
上記のコードは簡略化されています。Addressはサーバーのアドレス、Portはサーバーのポート番号を指します。
第二歩:設定オブジェクトのストレージ定義
同一ユニットのinitializationセクションで、以下のコードを実装します。ここでは、実行ファイルと同じディレクトリにXML形式でconfig.xmlという名前で保存する例を示します。このステップはオプションであり、処理しない場合はconfigオブジェクトが自動的に実行ファイルの現在ディレクトリにxxxx_config.xmlファイルを生成します。
initialization
ServerConfig.Storage:=TkbmMWXMLConfigurationStorage.Create(GetApplicationPath('server_config.xml'));
第三歩:TServerConfigの登録
同一ユニットのinitializationセクションで、TServerConfigを登録し、configオブジェクトがXMLファイル経由でこのオブジェクトを読み書きできるようにします。
initialization
ServerConfig.Storage:=TkbmMWXMLConfigurationStorage.Create(GetApplicationPath('server_config.xml'));
kbmMWRegisterKnownClass(TServerConfig);
第四歩:カスタム設定オブジェクトTServerConfigの使用
MainDatamoduleユニットでTServerConfig型のオブジェクトを宣言し、そのプロパティを通じて設定ファイルを読み書きできます。
最後に、その他の注意点:
デフォルトでは、kbmMW Configuration Frameworkは設定ファイルの自動バックアップを5回行います。不要な場合は、以下のコードを使用します:
initialization
ServerConfig.Storage:=TkbmMWXMLConfigurationStorage.Create(GetApplicationPath('server_config.xml'));
ServerConfig.Storage.BackupMaxCount:=-1; // バックアップファイルを生成しない
グローバルなConfigオブジェクトと設定オブジェクトの関係も理解する必要があります。デフォルトでは、設定オブジェクトのConfigurationプロパティはConfigを指します。この関係を理解することで、設定ファイルの読み書きを実装できます。設定ファイルのプロパティを変更した後、即時に設定ファイルに書き込む場合は、以下のコードを使用します:
ServerConfig.Configuration.Storage.Save;
これは少し冗長に見えるため、フレームワークは以下のような便利なメソッドを提供しています:
ServerConfig.WriteConfig; // 設定ファイルに書き込む
同様に、読み込みメソッドもあります:
ServerConfig.ReadConfig; // 設定ファイルを読み込む