E2149 Klasse besitzt keine Standardeigenschaft (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Delphi)

Sie haben eine Klassen-Instanz-Variable in einem Array-Ausdruck benutzt, aber der Klassentyp hat keine Standard-Array-Eigenschaft deklariert.


program Produce;

  type
    Base = class
    end;

  var
    b : Base;

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

begin
end.

In diesem Beispiel wird eine Fehlermeldung ausgelöst, da Base keine Array-Eigenschaft deklariert und b selbst kein Array ist.


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.

Wenn Sie eine Standard-Eigenschaft für eine Klasse deklariert haben, können Sie die Klassen-Instanz-Variable in Array-Ausdrücken verwenden, als wäre die Klassen-Instanz-Variable selbst ein Array. Eine andere Möglichkeit liegt darin, die Bezeichnung der Eigenschaft für den eigentlichen Array-Zugriff zu benutzen.

Anmerkung:  Wenn die Hinweisfunktion aktiviert ist, erhalten Sie zwei Warnmeldungen mit dem Inhalt, dass der an ch zugewiesene Wert niemals benutzt wird.