Delphiのプロジェクトファイルをいじる

ども、Norimakiです。

今回はDelphiのプロジェクトファイルについてです。

Delphiの流儀としてはフォームにコンポーネントを置いて、
そのコンポーネントのイベントハンドラにコードを書く。

という形になっているので、プロジェクトファイルに
コードを書く人はあまりいないのではないかと。

そう思ったりします。

僕も以前はそのような形でコードを書いていたんですが、
あるレポートでプロジェクトファイルにコードを記述して処理する。
という方法が紹介されていました。

たしか「フォーム依存の開発からの脱却」というレポートだったはず。
2005年のレポートです。僕の開発スタイルを大きく変えた衝撃的なレポートでした。

そのレポートの中に、プロジェクトファイルを書き換えてみよう。
的な部分があったんですが、

プロジェクトファイルにコードなんて書けるのかよ。

なんて思ったもんです。

でも今では、そのレポートのおかげでプロジェクトファイルの中に
アプリケーション初期化時・終了時に必要な処理を書いています。

具体的にはこんな感じ。

ちょいと説明すると、ここ(プロジェクトファイル)で呼ばれている関数は以下の通りです。

・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)。

で、後は、これをリポジトリに登録しておいて、
アプリケーションを新規に作成する際は、これを呼び出すと。

そういうことで、アプリケーション作成開始時の定型処理は
リポジトリに登録して効率化できますよと。

そういう話でした。

ではでは。
Norimakiでした。

こちらの記事もどうぞ。
>> Delphiのプロジェクトファイルをいじる その2
>> プロジェクトをリポジトリに追加する場合に注意すること

シェアする

  • このエントリーをはてなブックマークに追加

フォローする