Вы должны иметь геттеры и сеттеры. Под D2009 (не проверял другие версии) параметры для методов получения / установки не могут, по некоторым причинам, быть постоянными.
Это прекрасно работает под D2009:
type
TMyArray = array[0..20] of string;
type
TMyClass=class(TObject)
private
FMyArray: TMyArray;
function GetItem(Index: Integer): String;
procedure SetItem(Index: Integer; Value: string);
public
property Items[Index: Integer]: string read GetItem write SetItem;
end;
implementation
function TMyClass.GetItem(Index: Integer): string;
begin
Result := '';
if (Index > -1) and (Index < Length(FMyArray)) then
Result := FMyArray[Index];
end;
procedure TMyClass.SetItem(Index: Integer; Value: string);
begin
if (Index > -1) and (Index < Length(FMyArray)) then
FMyArray[Index] := Value;
end;
ПРИМЕЧАНИЕ. Я бы не стал просто игнорировать значения индекса вне диапазона, очевидно. Это был быстрый пример того, как сделать свойства статического массива в определении класса; IOW, это только компилируемый пример.