The Delphi Bug List

Entry No.
444
コンパイラ
D4 は TOleControl の全ての子クラス(TXXXXControl = class(TOleControl))に間違ったコードを生成する:全ての関数メソッドの引数が不正に生成される
1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 4.03 5.0 5.01 6.0 6.01 6.02 Kylix 1.0
Unknown Unknown Fixed Fixed Fixed Exists Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown
(訳注:5.01 日本語版では fixed でした)
解説
Reported by Kiriakos Vlahos; checked by Hallvard Vassbotn
再現手順:
マイクロソフトの Script Control と Excel Type Library をインポートします。

Script Control のインポート中に以下のエラーが発生します:
TScriptControl = class(TOleControl)
  ...
  function Get_Error: IScriptError;
    ...
    property IScriptControl_Error: IScriptError read      Get_IScriptControl_Error;
>>>  Should be Get_Error - causes compilation error

  ...
    function Run(const ProcedureName: WideString; var Parameters: PSafeArray; 
out pvarResult: OleVariant): OleVariant;
>>>  Argument out pvarResult: OleVariant should not be there.  The routine has only two arguments.

  ...
end;
Delphi 3 このユニットを正しくインポートします。

また Excel Type Library のインポートでは、数値または Excel のコレクションオブジェクト(Workbooks や Worksheets など)はデフォルトプロパティを持ちます。Delhi 4 でインポートされたユニットでは、これらのプロパティの "default" 指定子が省略されてしまいます。Delphi 3 はこの問題も適切に処理します。

From checker:
少なくとも二つめの問題(追加される out 引数)は Inprise に認識されているようです:
On Fri, 24 Jul 1998 11:25:36 -0700, in
borland.public.delphi.activex.controls.using "Alain Tadros"
 wrote:

>Hi Michael,
>Yes, it is a known problem for ActiveX Control wrappers in Delphi 4 and we
>are working on getting a fix out for it very soon.
>Sorry, I don't have an exact date for the release of the fix but very soon.
>Thanks
>Alain Tadros
>Delphi dev Team
注意:これは、同じ問題を説明した Michael Newton によるニュースグループへの投稿に対する返信です。
もう一方の問題(間違ったメソッド名とデフォルトプロパティ)は(まだ?)確認されていないようです。
Latest update of this entry: 1998-07-27
本家 The Delphi Bug List のエントリーはこちら
The Delphi Bug List 日本語訳 へ