E2149 このクラスはデフォルトプロパティを持っていません (Delphi)

提供: RAD Studio
移動先: 案内検索

エラーと警告のメッセージ(Delphi) への移動

配列式の中でクラスインスタンス変数を使用しましたが,そのクラス型はデフォルトの配列プロパティを宣言していません。


program Produce;

  type
    Base = class
    end;

  var
    b : Base;

  procedure P;
    var ch : Char;
  begin
    ch := b[1];
  end;

begin
end.

{ このコードでは Base が配列プロパティを宣言しておらず,b 自体が配列でないのでエラーが起きる }


program Solve;

  type
    Base = class
      function GetChar(i : Integer) : Char;
      property data[i : Integer] : Char read GetChar; default;
    end;

  var
    b : Base;

  function Base.GetChar(i : Integer) : Char;
  begin GetChar := 'A';
  end;

  procedure P;
    var ch : Char;
  begin
    ch := b[1];
    ch := b.data[1];
  end;

begin
end.

{ クラスのデフォルトプロパティを宣言した場合は,配列式の中でクラスインスタンス変数を実際の配列のように使用できる。または,プロパティの名前を直接指定できる }

メモ:  HINTS を ON にした場合,ch に代入された値は使用されていないというヒントが表示される