Windowsエクスプローラの "infotips"でJPEGファイルにEXIF情報を提供するためにシェル拡張を作成しようとしていますが、x64 DLLを生成するためにLazarusを使用しています。Lazarus/FPCのインターフェイス:複数の継承
Lazarusはインターフェイスで複数の継承をサポートしていますか?例えば
、何かのように:
type
IInfoTips = interface(IPersistFile, IQueryInfo)
おかげで、 マーク
Windowsエクスプローラの "infotips"でJPEGファイルにEXIF情報を提供するためにシェル拡張を作成しようとしていますが、x64 DLLを生成するためにLazarusを使用しています。Lazarus/FPCのインターフェイス:複数の継承
Lazarusはインターフェイスで複数の継承をサポートしていますか?例えば
、何かのように:
type
IInfoTips = interface(IPersistFile, IQueryInfo)
おかげで、 マーク
いいえ、FPCのインターフェイスは、まだマルチ継承をサポートしていません。
は何が実装クラスをさせて頂いており行うことができますことは、両方のインタフェースから継承:
type
TMyInfoTips = class(TInterfacedObject, IPersistFile, IQueryInfo)
ではなく、インターフェイスレベルで、あなたが望むように。
単一のインターフェイスタイプからのみ「継承」することができます。
デルファイもサポートしていません。 Delphi for .Net compilerが無かっただけですが、.Net/C#IRはその機能をサポートしています(そして期待しています)。
また、DelphiやFPCではこの機能がありません。
は両方のインターフェイスはちょうどデルファイのように、無料パスカル/ラザロのためにshlobjで定義されています。 Delphiの有効期間中にシンボルがユニットを変更した場合は、を試してください。ただし、最近のユニットに入れてください。大きなバックログがあります。
これは主にデルファイと互換性があります。予想通りに動作しないものを説明した方が簡単かもしれません。アルノーのコメントの後に追加されました
:
んが、それはないん。オブジェクトはパスカルでインタフェースを実装します。とにかくこれを行うことがなぜ本当に重要であるのか、私は本当に分かりません。確かにそれは構文糖のビットですが、任意のデルファイスタイルのインターフェイスがIUnknownのを実装しているので、あなただけの別のインターフェイスのインターフェイスを照会することができます
uses activex;
var x :IPersistfile;
y :IPersistStream;
begin
x.queryinterface(IID_IPersistStream,y);
end.
IMHOあなたは質問に答えませんでした。問題は、 "FPCがインタフェースで多重継承をサポートする"ことでした。 Delphiの「管理されていない」は、最新のバージョンでさえもありません。 .NetのためのDelphiだけがしました。 FPCはありますか?私はどちらも思っていません... –
これはあまりにもずっと前ですので、私はなぜ答えと質問の不一致がわかりません。とにかく質問を見直して答えました。 –
あなたはまだ質問に答えるのではないかと心配しています。それはインターフェースの実装ではなく、インターフェース定義そのものに関するものでした。問題は、C#またはJava AFAIRで可能なように、インタフェースが複数継承を持つ可能性があるということでした。このようなインタフェースの多重継承は、メリットをもたらす可能性があります。 Delphiはそれを許さず、何も見逃していないことを確かめたいと思っていました。そして、多重継承は実際にはDelphiによって実装されていませんでした(しかし、Delphi for .NET) 。この素晴らしい機能はまだQCループ内にあります...そして、FPCでは実装されていません... –