E2149 Klasse besitzt keine Standardeigenschaft (Delphi)
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.