私はユニットでクラスを持っています。通常、そのメソッドのアルゴリズムを変更すると、それを再コンパイルして、パッチ全体を配布する必要があります。DLLを使ってクラスのインスタンスを作成しようと思います。delphi.about.com で検索したところ、DLL を使用する代わりに BPL を使用できることがわかりました。Delphi 用の DLL です。問題は、私が見つけたほとんどすべての例が、関数をエクスポートする方法のみを示していることです。BPL を動的にロードしたいのですが、BPL を置き換えるたびに、エクスポートする関数だけでなく、クラスの最新のアルゴリズムを取得できます。
私が読んだ記事:
- http://delphi.about.com/od/objectpascalide/a/bpl_vs_dll.htm
- Delphi アプリケーションのプラグイン システム - bpl vs dll?
- http://delphi.about.com/library/weekly/aa012301a.htm
コンポーネントまたはクラスをカプセル化するために BPL をゼロから作成する方法の URL またはサンプルは大歓迎です。
親愛なる達人へ
次のようなコードがあるとします。
unit unitA;
interface
type
B = class(TObject)
public
procedure HelloB;
end;
A = class(TObject)
public
function GetB: B;
function HelloA: String;
procedure Help;
end;
implementation
uses
Dialogs;
{ B }
procedure B.HelloB;
begin
ShowMessage('B');
end;
{ A }
function A.GetB: B;
begin
Result := B.Create;
end;
function A.HelloA: String;
begin
Result := 'Hello, this is A';
end;
procedure A.Help;
begin
//do something
end;
end.
A のパブリック メソッドをすべてエクスポートしたいのですが、どうすれば DLL にできますか? インポート先の別のユニットから使用する方法は? まあ言ってみれば:
var a: A;
a := A.Create;
a.GetB;
showMessage(a.HelloA);
A はユニットで宣言されていません (DLL 内にあります)。お知らせ下さい。
万歳。昨夜手に入れました。私がしなければならないのは、DLL によって返されたオブジェクトのインスタンスをキャッチするために呼び出し元ユニットで使用されるインターフェイスをオブジェクトに実装させることだけです。
皆さん、ありがとうございました。