property от массива

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Zroman
Сообщения: 75
Зарегистрирован: 20 апр 2005, 19:23
Откуда: Киев

Есть массив FItems:array of integer;
хочу создать от него property Items, так чтобы можно было записывать Items[Index]:=x и читать x:=Items[Index].
Какого типа должен быть Items? Какова тогда должна быть сигнатура методов read и write?
Septic
Сообщения: 21
Зарегистрирован: 27 май 2005, 04:42
Откуда: Vladivostok

Посмотри исходники TList, там это очень наглядно реализовано.
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

Код: Выделить всё

type
  class TSome(...)
  private
    FItems: array of Integer;
    function GetItems(Index: Integer): Integer;
    procedure SetItems(Index: Integer; Value: Integer);
  public
    property Items[Index: Integer]: Integer read GetItems write SetItems;
  end;
implementation
function TSome.GetItems(Index: Integer);
begin
  Result := FItems[Index];
end;
procedure TSome.SetItems(Index: Integer; Value: Integer);
begin
  FItems[Index] := Value;
end;
С уважением, Lost Angel...
Zroman
Сообщения: 75
Зарегистрирован: 20 апр 2005, 19:23
Откуда: Киев

Спасибо
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

LAngel, а увеличить массив в SetItems в случае необходимости? ;)
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

Игорь Акопян, ну тогда так ;)

Код: Выделить всё

  if (index > VarArrayHighBound(FItems, 1)) or
     (index < VarArrayLowBound(FItems, 1)) then
     Raise(Exception.Create('Индекс выходит за границы массива'))
     else FItems[index] := Value;
С уважением, Lost Angel...
Ответить