1

COM経由でDelphi 6で.Net2.0アセンブリを使用しています。インターフェイスの 1 つのメソッドの 1 つが IEnumerable を返します。にある mscorlib.tlb をインポートする限り、

"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727"

、Delphi 6 では IEnumerable と IEnumerator の両方のインターフェイスにアクセスできます。mscorlib_TLB.pas で IEnumerable が定義されている部分は次のとおりです。

// *********************************************************************//
// Interface: IEnumerable
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {496B0ABE-CDEE-11D3-88E8-00902754C43A}
// *********************************************************************//
  IEnumerable = interface(IDispatch)
    ['{496B0ABE-CDEE-11D3-88E8-00902754C43A}']
    function GetEnumerator: IEnumVARIANT; safecall;
  end;

GetEnumerator メソッドの戻り値は IEnumerator ではなく、IEnumerator にキャストしようとすると、「インターフェイスがサポートされていません」という例外がスローされます。

以前にこれまたは同様の問題に遭遇した人はいますか? どうすれば解決できますか?

4

2 に答える 2

6

これは、次に示すように、COM 相互運用機能を介して .NET オブジェクトと対話する場合の標準的な動作です。

http://msdn.microsoft.com/en-us/library/111chfb8(VS.71).aspx

于 2009-03-25T16:55:42.163 に答える
2

IEnumVARIANT に関する MSDN の説明へのリンクも役立つ場合があります: http://msdn.microsoft.com/en-us/library/ms221053.aspx

于 2009-03-25T18:06:34.737 に答える