Delphiコンポーネントのインストールの仕組みを解説します
コンポーネントをインストールするとは?
Delphiに、コンポーネントをインストールするとは、以下の意味を持ちます。
- Delphi IDEのコンポーネントパレットに、コンポーネントを表示する。
- コンポーネントを使ったプログラムをビルドできる
上記の1.と2.が別物であることに注意が必要です。
Delphiコンポーネント製品の構成
例えば、弊社で販売しているDOA(Direct Oracle Access)も、DBISAMも、いずれも以下のような構成をしています。
- コンパイル済みユニット(DCUファイル)
- コンパイル済みパッケージ(DCPファイル)
- 設計時パッケージ(BPLファイル)
- 実行時パッケージ(BPLファイル)
- ソースコード(PASファイル,DFMファイルなど)
タイプ | DBISAMの例 | パス |
コンパイル済みユニット | dbisamen.dcu, dbisamlb.dcu | C:\dbisam\cssrc\ver4\d7\code |
コンパイル済みパッケージ | db421d7r.dcp, db421d7d.dcp | C:\dbisam\cssrc\ver4\d7\code |
実行時パッケージ | db421d7r.bpl | C:\dbisam\cssrc\ver4\d7\code |
設計時パッケージ | db421d7d.bpl | C:\dbisam\cssrc\ver4\d7\code |
ソースコード | dbisamen.pasなど | C:\dbisam\cssrc\ver4\d7\code\source |
IDEのコンポーネントパレットにコンポーネントを表示するには?
- 手動でコンポーネントをインストールする
Delphi IDEのメニューの「コンポーネント」「パッケージのインストール」を実行すると、インストール済みの設計時パッケージの一覧が表示されます。
ここで、インストール済みの設計時パッケージファイルのフルパスが確認できます。例えば、DBISAMの場合は、インストーラでインストールすると C:\dbisam\cssrc\ver4\d7\code\db421d7d.bpl などとなっているでしょう。
試しに、このメニューでパッケージを一覧から削除すると、コンポーネントパレットからDBISAMコンポーネントが消滅しますが、その後、再びパッケージのインストールをしなおせば、コンポーネントが復活します。(パッケージファイルのパスがわからなくなると再インストールできなくなるので注意)
- コンポーネントのレジストリ登録
上記でコンポーネントの手動インストール方法を説明しましたが、この設定内容はDelphiの終了時にレジストリに保存され、起動時に復元されます。このレジストリパスは、以下の通りです。
HKEY_CURRENT_USER\Software\Borland\Delphi\7.0\Known Packages
- 設計時パッケージの検索パス
レジストリエディタでKnown Packagesのエントリを見れば明らかですが、設計時パッケージはフルパスで登録されているので、環境設定のライブラリパスなどに関係なく、設計時パッケージのインストールは出来てしまいます。
コンポーネントを使ったプログラムをビルドするには?
コンポーネントパレットに追加されたコンポーネントを使って作成したプログラムをビルドするには、以下の条件が必要です。
- ライブラリパスに、DCUファイル/DCPファイルのパスを追加する。
コンポーネントを使用するソースコードでは、uses節にユニット名が追加されていますから、そのユニットがライブラリの検索パスから見つかる必要があります。「ツール」「環境オプション」「ライブラリ」で、ライブラリパスを確認し、DCU/DCPの存在するフォルダが見つかることを確認して下さい。
たとえば、DBISAMをインストーラを使ってインストールした場合、自動的に、ライブラリパスにC:\dbisam\cssrc\ver4\d7\code\などが追加されています。
プログラムを単体のEXEとして作成し、コンポーネントを静的にリンクする場合には、DCUファイルだけが必要ですが、実行時パッケージを使用する場合には、DCPファイルも必要になります。