DelphiのプロジェクトファイルをいじるテンミニッツサイトストラテジーサンデーアマグラマーNorimakiの開発日誌。プロジェクトファイルども、Norimakiです。今回はDelphiのプロジェクトファイルについてです。Delphiの流儀としてはフォームにコンポーネントを置いて、そのコンポーネントのイベントハンドラにコードを書く。いう形になっているので、プロジェクトファイルにコードを書く人はあまりいないのではないかと。僕も以前はそのような形でコードを書いていたんですが、あるレポートでプロジェクトファイルにコードを記述して処理する。いう方法が紹介されていました。「フォーム依存の開発からの脱却」というレポートだったはず。2005年のレポートです。僕の開発スタイルを大きく変えた衝撃的なレポートでした。そのレポートの中に、プロジェクトファイルを書き換えてみよう。的な部分があったんですが、プロジェクトファイルにコードなんて書けるのかよ。今では、そのレポートのおかげでプロジェクトファイルの中にアプリケーション初期化時・終了時に必要な処理を書いています。具体的にはこんな感じ。NP_ApplicationFin//-------------------------------------GP_Finalize;ちょいと説明すると、ここ(プロジェクトファイル)で呼ばれている関数は以下の通りです。・GP_StartUpCheck・GP_Init・GP_Fin・GP_Finalizeこれらの関数はプロジェクトファイルに別途記述することになります。詳細は改めて書きたいと思います。GP_StartUpCheckはスタートアップチェックです。試用期間があるなら試用期間が経過しているかどうかのチェックなどをします。ここで、アプリケーションを起動して良いかどうかの判断をします。GP_Initはアプリケーション起動が許可されれば最初に呼ばれる部分です。フォーム生成後に呼ばれていますので、この関数内では全てのフォームにアクセスできます。必要なファイルの読み込みなどもこの部分で行うことになると思います。GP_Finはアプリケーション終了時に呼ばれる部分です。アプリケーションで使用したデータなどを保存する処理などを記述したりします。GP_Finalizeはアプリケーションが起動したかどうかにかかわらず、すべての最終処理を行います。GP_StartUpCheckで起動チェックを行いますが、その際に、アプリケーションが起動が許可されればGP_InitとGP_Finが呼ばれることになります。仮に、GP_InitとGP_Finが呼ばれなかったとしても、GP_Finalizeは必ず呼ばれるので、最終処理に必ず必要な処理はGP_Finalizeに書くことになると思います。いう感じで、プロジェクトファイルにコードを記述しておきます。スタートアップチェックで起動が許可されなかった場場合はシステムエラー表示処理を呼んであげると親切かと(NP_DisplaySystemError)。後は、これをリポジトリに登録しておいて、アプリケーションを新規に作成する際は、これを呼び出すと。いうことで、アプリケーション作成開始時の定型処理はリポジトリに登録して効率化できますよと。