Метод <имяМетода> не может содержать параметры, передаваемые по ссылке

Описание

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

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

Удалите ключевое слово 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(i: Integer; Var s: String);
    Begin
        PropValue[i] := s;
    End Sub Set_Item;
    
    Function Get_Item(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;

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

См. также:

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