0

ユーザー(初心者のプログラマー)がイベント通知の下で実装できるプログラム実行中の状況を疑問に思っています。たとえば、次のようになります。

TNotifySomething : procedure (const param: TObject) of object;

1 - このイベントは Dll によって実装される可能性がありますか? どうにかして発行しなければなりませんか?
2 - プログラムの実行中にインスタンス化されたオブジェクトを参照渡しで dll メソッドに渡すことはできますか?
3 - マルチスレッド環境で、イベント (dll で定義) を 2 つ以上のスレッドで呼び出すと、アクセス違反などの問題が発生しますか?
4 - 私がそれについて読むことができる良い本や論文を知っている人はいますか?

PS: これは Delphi 6 で実行できますか?

4

1 に答える 1

1

1) いいえ。DLL と BPL の Google。このトピックは 1997 年から繰り返されています。BPL は Pascal 用です。DLL は Windows 用です。Windows にはオブジェクトがありません。ただし、COM インターフェイスがあります (COM 定義型の IUnknown、Pascal 型のサポート セットであり、イベント コールバックは存在しません)。

http://newsportal.delphi-jedi.org/thread_frameset.php?group=jedi.jclで「can JCL except_stack_list work for dll?」スレッドを試すこともできます。

2)IUnkownおよび COM 標準化されたデータ型による。それ以外は、コンパイラの型安全性をオーバーライドします。つまり、独自のパスカルからバイナリへの安全層を実装して提供する必要があります。

3)呼び出し先と呼び出し元の両方のコードに依存します。両方とも再入可能であれば、再入可能です。そうでないものがあると、エラーが発生します。

4) 何を達成したいかによります。

DLL の味を知りたい場合は、アセンブラの本、Pascal の代わりに asm でのプロシージャの実装に関する Delphi のマニュアル、特に異なる Delphi バージョンでのこれらすべてのデータ型のバイナリ表現についてのマニュアルを参照してください。Delphi 標準の型安全性を否定する場合は、独自のものを提供する必要があります。

COM の味を知りたい場合は、COM に関する本と、COM オブジェクトの実装と使用に関する Delphi のマニュアルを参照してください。

BPL の味を知りたい場合は、ランタイム パッケージに関する Delphi のマニュアルを読んでください。彼らは Delphi の第 1 級市民であり、追加の書籍は任意です。

于 2013-03-18T08:55:24.890 に答える