ども、Norimakiです。
今回はアプリケーションベースファイル【NY_Application.pas】について。
ここら辺(↑)で使用する関数を NY_Application.pas で定義します。基本的にはアプリケーションの開始と終了の際に処理する部分を定義します。
・アプリケーションで使用する共通クラスの領域確保、解放
・多重起動チェック
・エラーメッセージ、エラーコードの定義
・システムエラーメッセージ処理
・浮動小数点例外処理
・システム変数の設定
・フォーム位置、サイズの保存、復元
・ユーザーアカウント処理
・IniFile処理
・ライセンスチェック
こんな感じです。
で、NY_から始まるユニットは基本的にアプリケーションごとの変更は不要です。
なので、共通ファイルなわけですが。
アプリケーションごとに変更が必要なファイルに関しては、GP_といった
Gから始まるユニット名になっています。
では、取りあえず簡単なところから。
多重起動チェック
多重起動チェックについてはすでに過去に記事にしていますので、
そちらを参考にして下さい。
>> 多重起動チェック
エラーメッセージ、エラーコードの定義、システムエラーメッセージ処理
システムエラーメッセージ処理については、
プロジェクトファイルでアプリケーション起動チェックを行い
起動が出来ない場合に呼ばれる処理になります。
その表示内容は、エラーメッセージ、エラーコードの定義に従います。
エラーメッセージ、エラーコードの定義については、
>> 多重起動チェック
にて記述してありますので参照してください。
エラーメッセージの表示は特に問題ありませんが、
一応ソースを表示しておきます。
procedure NP_DisplaySystemError; begin //------------------------------ // システムエラーメッセージ表示 //------------------------------ if NV_FatalErrorCode<>0 then begin if NV_FatalErrorCode>=Ord(ecLastMessage) then begin //------------------------- // 予想外のエラーコード //------------------------- NP_DispErrMes('想定外のエラーコードです[ErrCode:'+IntToStr(NV_FatalErrorCode)+']'); end else NP_DispErrMes(_SysErr[NV_FatalErrorCode]); end; end;
こんな感じになります。
起動チェックの各処理部分でエラーなり起動が許可できない状況になると
NV_FatalErrorCodeにエラーコードを入れて戻ります。
プロジェクトファイルではエラーが発生すると
NP_DisplaySystemErrorが呼ばれることになっていますので、
エラーコードに従ったメッセージが表示されることになります。
NP_DispErrMesはエラーメッセージを表示するためのもので、
MessageDlg(Mes,mtError,[mbOK],0);
これと同義です。
浮動小数点例外処理
浮動小数点例外処理は良く意味が解りませんが、
途中で例外が起きてエラーメッセージが表示されるのが面倒くさいので、
それを表示させないためのものです。
どこで入手したものか失念してしまいましたが、
以下ソースです。
procedure NP_MathExceptionSetting;
begin
//--------------------------------------
// 浮動小数点例外処理:現在の設定を退避
//--------------------------------------
NV_SaveFPUMask:=Math.GetExceptionMask;
//--------------------------------------
// 全ての浮動小数点演算の例外を無視する
//--------------------------------------
Math.SetExceptionMask([exInvalidOp,
exDenormalized,
exZeroDivide,
exOverflow,
exUnderflow,
exPrecision]);
end;
NV_SaveFPUMaskで現在の設定を保存していますので、
アプリケーション終了時に戻してあげる必要があります。
Math.SetExceptionMask(NV_SaveFPUMask);
こんな感じで。
詳しくは NP_ApplicationFin でやります。
システム変数の設定
システム変数というのは、実行中のフォルダのパスとか、
ユーザー名だとかユーザーフォルダとか。
そういったアプリケーションで使用する基本的な変数です。
必要に応じて設定します。
あまり数は多くないので具体的な例は省略します。
基本的には
・実行フォルダ
・ユーザーデータ保存フォルダ
・システムフォルダ
こんな感じになろうかと思います。
あとは、ユーザーフォルダが存在しない場合は
ユーザーフォルダを作成したりもします。
取りあえず今回はこのくらいで。
続きは改めて。
ではでは。
Norimakiでした。