1

別のアプリが設定できるパブリック ADOConnection を持つクラスを定義しようとしています。

ただし、ADOConnection 変数を作成するコンストラクターを動作させることができません。これは私がこれまでに持っているコードです:

unit SuperheroClass;

interface

uses
  ADODB;

type
  TSuperhero = Class

  private
    MyQry: TADOQuery;
    constructor Create;
  public
    MyCon: TADOConnection;

end;

implementation

constructor TSuperhero.Create;
begin
  MyCon := TADOConnection.Create(self);
end;

end.

私が間違っていなければ、Self を使用してこれらの内部クラス変数を作成し、それらがクラスに属するようにする必要があります。その後、クラス デストラクタでそれらを解放できます。

このコードは私にエラーを与えます:

[エラー] SuperheroClass.pas(23): 互換性のない型: 'TComponent' と 'TSuperhero'

ここで何が間違っていますか?

4

2 に答える 2

2

nil をパラメータとして TADOConnection.Create に渡すことができます。これは、TSuperHero クラスのデストラクタでの破壊を妨げるものではありません。

constructor TSuperhero.Create;
begin
  MyCon := TADOConnection.Create(nil);
end;

TADOConnection コンストラクタに渡されるパラメータは、コントロールがビジュアル コンポーネントとしてフォームにドロップされるときに使用されます。TSuperHero は TComponent から派生していないため、コードでコンパイル エラーが発生しています。

于 2013-10-07T13:33:21.533 に答える