Метод, реализующий индексированное свойство не может содержать параметры, передаваемые по ссылке

Описание

При использовании старого способа объявления свойств в сигнатуре процедуры/функции, используемой для обработки доступа к свойству, первые переменные, отвечающая за индексы свойства, передаются по ссылке (объявлены с ключевым словом Var). Передача параметров по ссылке в таких случаях запрещена спецификацией языка Fore.

Способ устранения

Удалите ключевое слово Var, установленное перед первыми параметрами в заголовке процедуры/функции, используемой свойством.

Пример

Class MyClass: Object
    Private PropValue: Array Of String;
    
    Public Constructor Create(Length: Integer);
    Begin
        PropValue := New String[Length];
    End Constructor Create;
    
    Sub Set_Item(Var i: Integer; s: String);
    Begin
        PropValue[i] := s;
    End Sub Set_Item;
    
    Function Get_Item(Var i: Integer): String;
    Begin
        Return PropValue[i];
    End Function Get_Item;
    Public Property Item(i: Integer): String Get Get_Item Set Set_Item;
End Class MyClass;

При компиляции указанного кода будет сгенерирована ошибка «Метод, реализующий индексированное свойство не может содержать параметры, передаваемые по ссылке». Для разрешения ошибки необходимо удалить ключевое слово «Var», указанное перед параметром «i» в области объявления переменных в процедуре Set_Item и функции Get_Item.

См. также:

Ошибки компилятора | Ошибка: Метод <ИмяМетода> не может содержать параметры, передаваемые по ссылке