Delphiコンポーネントをリビルドする場合の注意点を記述します

Delphiコンポーネントを再構築する方法を、DBISAMコンポーネントを例に説明します。

準備

まず、再構築しようとするコンポーネントを、手動でアンインストールしておくのが無難です。Delphi IDEのメニュー「コンポーネント」「パッケージのインストール」で設計時パッケージを選択し、「削除」で削除してください。

例えば、DBISAMを再構築する前に、「DBISAM Database System design time package」(db421d7d.bplなど)を削除すると、コンポーネントパレットからDBISAMタブが消えてしまうはずです。

パッケージプロジェクトを開く

コンポーネントのソースコードは、通常は二つ(1つは設計時パッケージ、1つは実行時パッケージ)のパッケージファイル(DPKファイル)として配布されています。まず、実行時パッケージ、次いで設計時パッケージの順にプロジェクトを開いてビルドします。

例えばDBISAMをリビルドするには以下のプロジェクトを順に再構築します。(バージョンによってファイル名は微妙に異なりますがdb4??d?d.dpkが設計時パッケージ db4??d?r.dpkが実行時パッケージです)

** C:\dbisam\cssrc\ver4\d7\code\source\db421d7r.dpk

** C:\dbisam\cssrc\ver4\d7\code\source\db421d7d.dpk

パッケージプロジェクトの再構築

普通に、プロジェクトの再構築を行えばOKです。ただし、注意点が以下の通りに存在します。

注意

1つのパッケージプロジェクトを再構築すると、各ユニットのDCUファイルの他、DCPファイル1つと、BPLファイル1つが作成されます。ここで生成されたファイルが何処に出力されるのかに、注意が必要です。

たとえば、DBISAMのソースを再構築すると、以下のファイルが作成されると思います

C:\dbisam\cssrc\ver4\d7\code\sourceC:\Program files\Borland\Delphi\7.0\Projects\BplCC:\Program files\Borland\Delphi\7.0\Projects\Bpl

ファイルタイプ 出力先パス
DCUファイル
DCPファイル
BPLファイル

注意を要するのは、出力先のフォルダは環境によって異なることです、必ず確認してください。出力先フォルダは、パッケージプロジェクトのプロジェクトオプションの設定と、環境オプションの出力先ディレクトリ設定の両方の設定に影響されます。通常、プロジェクトオプションでは出力先の設定欄が空白になっていることが多く、その場合には環境設定で指定されたフォルダとなります。

db421d7r.dpk, db421d7d.dpk ともにプロジェクトオプションのディレクトリ/条件を見ると空欄になっているはずです。

したがって、「ツール」「環境オプション」「ライブラリ」で表示される「BPL出力ディレクトリ」「DCP出力ディレクトリ」が効いてきます。BPLのデフォルト出力先、DCPの出力先については、コンパイラのバージョンによっても異なります。

再構築したパッケージのインストール

  1. IDEへのインストール

    設計時パッケージを再構築したあと、「インストール」ボタンを押すか、プロジェクトマネジャでパッケージを選択して右クリックから「インストール」とすることで、設計時パッケージをインストールすることができます。(もちろん、パッケージのインストールメニューから追加しても可)

    ** 注意

    再構築して作成された新しいBPLやDCPファイルは $(Delphi)\Projects\Bpl にできますが、C:\dbisam\cssrc\ver4\d7\code\には旧いBPL/DCPファイルが残っています。動作確認が済んだら、旧いBPL/DCPは削除することをお奨めします。

  2. ライブラリパスの確認

  再構築で作成された新しいDCUはC:\dbisam\cssrc\ver4\d7\code\sourceに作成されましたが、C:\dbisam\cssrc\ver4\d7\codeには旧いDCUが残っており、しかもライブラリパスはC:\dbisam\cssrc\ver4\d7\codeを参照しています。そこで、新しいDCUをC:\dbisam\cssrc\ver4\d7\codeに上書コピーすることをお奨めします。

一般的に、コンポーネントの再構築とインストールで失敗するのは、同名ファイルの新バージョンと旧バージョンが複数のフォルダに存在し、ライブラリの参照パスが複雑であることと一緒になって、どれが参照されているのか予想外の動きをしてしまう場合です。

最新と確信できるBPL/DCP/DCUの組合せ以外のファイルは、念のため削除してしまうのが一番です。