コンポーネントの登録方法等
登録用パッケージのインストール
動作確認等
Delphi 2005 以降用の記事
パッケージ dclusr.dpk のインストール ( Delphi 2005 以降 )
コンポーネントはどこかのパッケージに登録して使用することになります.パッケージに登録しなくても使用できますが,その場合,実行時に生成(動的に生成)して使用することになります.
この [コンポーネントのインストール方法等] の各ページの説明では,dclusr.dpk を登録用のパッケージとしています.
Delphi 7 までは,このパッケージ dclusr.dpk はインストール済でしたが,Delphi 2005 以降,初期状態ではインストールされていません.パッケージにコンポーネントを登録するには,このパッケージをインストールしておかなければなりせん.パッケージのインストールそのものは,パッケージ形式で提供されている他のコンポーネントと同じです.
以下の説明は,Delphi 2010 のものです.
[備考]
.dpk ファイルを開くと,プロジェクトマネージャでの拡張子は .bpl となります.これはコンパイル済みの拡張子名です.
新規に VCL フォームアプリケーションの作成の状態にすると,コンパイルしていないのに,プロジェクトマネージャで表示される拡張子が .exe となるのと同じです.実際にコンパイルしないと .exe ファイルはできません.それと同じで,パッケージもインストールやコンパイルをしないと,.bpl ファイルは実際には作成されません.
図1
パッケージを開く
dclusr.dpk ファイルの場所については後述の記事を参照
Delphi XE2 以降では,[Win32] のフォルダにあるが,パッケージそのもには,32 ビット用と 64 ビット用の区別はない
図2
インストール実行
パッケージ名のところを選択
この図ではコンパイル済みの名前 (拡張子が .bpl) となっている
マウス右ボタンで現れるメニューで [インストール] をクリック
図3
確認ダイアログ
この表示パスが dclusr.dpk のコンパイル済ファイルの場所
.dpk の場所とは違うので注意
デフォルトでは以下の階層下
%PUBLIC%\DOCUMENTS\RAD Studio
図4
必ず [上書き保存]
パッケージ名のところを選択
この図ではコンパイル済みの名前 (拡張子が .bpl) となっている
マウス右ボタンで現れるメニューで [上書き保存] をクリック
図5
[上書き保存] を忘れた場合
IDE を閉じる時に確認ダイアログを表示
もちろん [はい(Y)] をクリック
新規にコンポーネント登録用のパッケージを作成した場合も同様にインストールしておきます.
パッケージの requires 部には,そのパッケージで必要なパッケージ名を記述します.新規にパッケージを作成した場合,rtl ぐらいしかありません.
designide については,下記のリンクの Owl's perspective の記事を参考にしてください.
新規にパッケージを作成してインストールした場合,[Imports] フォルダにライブラリのパスの設定が必要なことがあります.後述の [パッケージインストール後のファイル類とその場所] の説明を参考にしてください.
dclusr.dpk 以外の一般的なパッケージのインストール方法の手順も,dclusr.dpk と全く同じです.違うのはパッケージの名前と,インストール (登録) するコンポーネント類です.
複数のパッケージで提供されているコンポーネント類の場合は注意が必要です.
全てのパッケージのコンパイルは必要ですが,インストールは特定のパッケージだけでいい場合もあります.コンパイルやインストールに順番の指定があることもあります.これは,コンポーネントファイル等に依存関係があるからです.これを無視すると,ファイルが見つからない等のエラーが発生し,正常にインストールできないことがあります.
また,インストール用のプログラム (バッチファイルも含む) が提供されている場合もあります.インストール用のプログラムは,管理者権限で実行しないと正常に実行またはインストールできないのが普通です.
提供されているパッケージには,ほとんどの場合説明書きが添付されています.それに手順が書いてあります.
[備考 1]
パッケージの .dpk 内のコードに Delphi のバージョン依存コードがなく,コンポーネントのソースコードが添付されていれば,そのパッケージは他のバージョンの Delphi にもインストールできます.もちろん,コンポーネント類のソースコードに Delphi のバージョンに依存する部分がある場合は修正が必要となります.
[備考 2]
コンパイル済みで提供されているパッケージは,他のバージョンの Delphi にはインストールできません.コンパイル済みのファイルは,バージョン依存ファイルです.
コンパイル済の 32 ビットのパッケージは 64 ビットのアプリの作成には使用できません.コンパイル済の 64 ビットのパッケージは,32 ビットのアプリの作成には使用できません.
パッケージのある場所から開いても構いませんが,以下のように [コンポーネント] [パッケージのインストール] から開けばディレクトリを辿る必要がありません.
このダイアログで表示される名前は次のようになっています.
Borland User Components (Delphi 6, 7)
CodeGear User Components (Delphi 2007, 2009)
Embarcadero User Components (Delphi 2010, XE, XE2)
CodeGear User Components (Delphi XE3, XE4, XE5)
パッケージのインストールは,このダイアログからも行えます.[追加] ボタンをクリックします.
図6
パッケージの開き方
[コンポーネント]
[パッケージのインストール] で
[... User Components] を選択
[編集] をクリック
図7
パッケージの開き方 (XE3, XE4)
[コンポーネント]
[パッケージのインストール] で
[... User Components] を選択
[編集] をクリック
[備考]
上の図のパッケージの一覧における表示名は,パッケージのプロジェクトの [オプション] ダイアログの [説明] で変更できます.
インストール済みのパッケージはアンインストールしてから変更します.変更したらまたインストールします.この時,Delphi の IDE を閉じる必要はありません.
dclusr.dpk ファイルの場所 - 32 ビット用と 64 ビット用の区別はない
Delphi のインストール先がデフォルトままであった場合,以下のフォルダの階層下の,下図の場所にあります.
Program Files
Program Files (x86) (64 ビット版の Windows 7 の場合)
Delphi XE2 では,32 ビットと 64 ビットのアプリが開発できるようになりましたが,パッケージには,32 ビット用と 64 ビット用の区別はありません.同じものを使用します.
つまり,コードは 32 ビットと 64 ビットで共通に使用することになります.ユニットのコードが 64 ビットで使用可能かどうかは,コードによります.このことは,コンポーネントのソースコードに限りません.Delphi のコード全体に言えることです.
図8
Delphi 6
図9
Delphi 7
図10
Delphi 2007
図11
Delphi 2009
図12
Delphi 2010
図13
Delphi XE
図14
Delphi XE2, XE3, XE4, XE5
XE2 は,9.0 フォルダ内にある
XE3 は,10.0 フォルダ内にある
XE4 は,11.0 フォルダ内にある
XE5 は,12.0 フォルダ内にある
図15
Delphi XE6, XE7
XE6 は,14.0 フォルダ内にある
XE7 は,15.0 フォルダ内にある
ユーザパッケージ,dclusr.dpk をインストールすると,拡張子が dproj, dproj.loccal 等のファイルができます.作成されるファイルの種類はバージョンによって違います.
パッケージそのもののコンパイル済みファイルは,dclusrXXXX.bpl となります.パッケージに含まれているコンポーネントのユニット類もインストール時にコンパイルされます.ユニットのコンパイル済み拡張子は dcu です.パッケージにコンポーネントを追加して,[ビルド] あるいは [再構築] すると,bpl, dcu が再作成されることになります.
dclusrXXX.bpl の XXX の部分は,[パッケージバージョン] の番号です.[パッケージバージョン] の値は,[コンパイラ バージョン - RAD Studio] のページで確認できます.
パッケージのインストールで作成されるこれらのファイルの場所は,パッケージのインストールの項の記事で確認できるように,dpk ファイルとは別の場所に保存されます.
この仕様は,マイクロソフトの指針によるものです.[Windows Vista 以降の OS で Delphi] の参考゜リンクの記事で確認してください.
不要になったパッケージを削除する場合,状況によっては,インストール時に作成された,これらのファイルも削除しないと,トラブルの原因となることがあります.
[備考 1]
インストールしたコンパイル済みパッケージファイル (拡張子は .bpl) は,デフォルトでは以下のフォルダの階層下の,該当バージョンの Delphi フォルダ内の [Bpl] フォルダに保存されます.
パッケージ形式で提供されているコンポーネントの場合は,パッケージの設定によって別の場所に保存されることもあります.Delphi が標準で提供しているコンポーネント群のコンパイル済みパッケージは,Delphi のインストール先の [Bin] フォルダにあります.
%PUBLIC%\DOCUMENTS\RAD Studio
%PUBLIC%\DOCUMENTS\Embarcadero\Studio // Delphi XE6 以降
一方,タイプライブラリの取り込みで作成したユニットとそのコンパイルしたファイルは,以下の階層下の,該当バージョンの Delphi のフォルダ内の [Imports] フォルダに保存されます.
%USERPROFILE%\DOCUMENTS\RAD Studio
%USERPROFILE%\DOCUMENTS\Embarcadero\Studio // Delphi XE6 以降
いずれもデフォルトの設定で Delphi をインストールして,関係設定の変更がない場合です.
[備考 2]
Delphi のインストール先のフォルダ名は Delphi のバージョン番号,コンパイラバージョン等の値ではありません.これは別名 (Other names) とも呼ばれていますが,Delphi 2005 が BDS 3 です.そこからの連番になっています.
Delphi XE7 は 15.0, Delphi XE8 は 16.0 というようになっています (13.0 は欠番).
新しいバージョンの Delphi をインストールした場合の扱い例
新しいバージョンの Delphi をシステムにインストールした場合,前のバージョンの Delphi に多くのコンポーネント類をインストール (登録) していると,それら全てのコンポーネント類を,新しいバージョンの Delphi に登録するのは結構面倒です.
以下は,パッケージのソースコードを編集して,コンポーネントをまとめて登録する方法です.
[備考]
Delphi の再インストールをする時のことを考えて,dclusr.dpk のバックアップファイルを作成しておいて,別の場所に保存しておくと便利です.
リスト1
Delphi XE4(UP1) インストール直後の dclusr.dpk の内容
copy code
package dclusr;
{$R *.res}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO OFF}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS OFF}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST ON}
{$MINENUMSIZE 1}
{$IMAGEBASE $51000000}
{$DEFINE DEBUG}
{$ENDIF IMPLICITBUILDING}
{$DESCRIPTION 'CodeGear User Components'}
{$LIBSUFFIX '180'}
{$DESIGNONLY}
{$IMPLICITBUILD ON}
requires
rtl,
vcl,
designide;
end .
筆者の場合,コンポーネント,ユニット類,全て特定の同じフォルダに格納し,全ての Delphi のバージョンで共有して使用しています.そして,パッケージで提供されているコンポーネント類以外は,全て同じパッケージに登録しています.具体的にはユーザパッケージ (dclusr.dpk) です.
今回,Delphi XE4(UP1) をインストールし,以下の手順でコンポーネント類を登録しました.
Delphi XE4 のユーザパッケージ名は dclusr.dpk で,コンパイル済み名は dclusr180.bpl です.
(1) Delphi XE4 を起動
(2) [ファイル] [新規作成] [VCL フォームアプリケーション] にする
(3) [ツール] [オプション] でコンポーネントを格納しているフォルダにパスを通す
(4) [ファイル] [開く] で dclusr.dpk を開き,ソースを表示する
(5) 古いバージョンの dclusr.dpk をテキストエディタで開く
(6) この古いバージョンの dclusr.dpk のリソース部分 {$R ...} と contains 部分をコピーして,Delphi XE4 の dclusr.dpk のソースコードの該当部分に貼り付ける
(7) Delphi XE4 の dclusr.dpk をインストールし,上書き保存
(8) インストールの際にエラーが発生したら,該当部分を修正し,ビルドして上書き保存
これで,全てのコンポーネント類を同時にパッケージに登録しました.
[タイプライブラリの取り込み] 等で作成したユニット類は,Delphi XE4 の該当部分,これはデフォルトでは Imports フォルダです.ここにコピーし,Delphi XE4 の dclusr.dpk の該当ソースのパス名を編集しておきます.
パッケージのインストールまたはビルドの際に,下図のダイアログが表示されたら,[OK] をクリックして閉じます.
実際には,コンポーネントのインストール等の記事を書く都合上,それらの動作を個別に確認した後で上記の作業を行っています.
図16
追加パッケージ類
一度 Delphi XE4 の IDE を閉じて,再度起動し,[表示] [ツールバー] で [コンポーネント] をチェックしました.下図のように,コンポーネントパレットにコンポーネントが登録されたことを確認しました.
図17
[plXRAY] に登録されたコンポーネント群
1 つづつ登録しないで,dclusr.dpk を編集して,一気に登録
.dpk ファイルをテキストエディタで編集する際の注意
パッケージファイル (.dpk ファイル) は,テキストエディタで編集することもできます.
その場合,Windows Vista 以降では,テキストエディタを管理者権限で実行します.そうしないと,編集結果が保存できなかったり,IDE で編集した結果も表示できない場合があります.
たとえ編集結果が保存できなくても,Windows Viata 以降では,必ずしもアクセス拒否等のエラーが発生するとは限りません.
テキストエディタを一般ユーザで起動して .dpk ファイルを編集して保存する際,アクセス拒否のエラーが発生しない場合,そのファイルは,別の場所に保存されることがあります.
この現象は,Windows Vista で実装されたファイルの仮想化によるものです.例えば Delphi XE の場合は,以下の場所に保存されます.
このことは,.dpk ファイルだけではなく,システム関係のフォルダや,Program Files フォルダにあるファイルを操作する際の一般的な注意事項です.ただし,この現象は必ず発生するわけではありません.使用するテキストエディタによって違います.
%LOCALAPPDATA%\VirtualStore\Program Files (x86)\Embarcadero\RAD Studio\8.0\lib\win32\release\dclusr.dpk"