E2149 このクラスはデフォルトプロパティを持っていません (Delphi)
エラーと警告のメッセージ(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 に代入された値は使用されていないというヒントが表示される