Страница 1 из 1

property от массива

Добавлено: 03 авг 2005, 00:50
Zroman
Есть массив FItems:array of integer;
хочу создать от него property Items, так чтобы можно было записывать Items[Index]:=x и читать x:=Items[Index].
Какого типа должен быть Items? Какова тогда должна быть сигнатура методов read и write?

Добавлено: 03 авг 2005, 05:14
Septic
Посмотри исходники TList, там это очень наглядно реализовано.

Добавлено: 15 авг 2005, 08:12
LAngel

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

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;

Добавлено: 15 авг 2005, 12:51
Zroman
Спасибо

Добавлено: 15 авг 2005, 13:24
Игорь Акопян
LAngel, а увеличить массив в SetItems в случае необходимости? ;)

Добавлено: 15 авг 2005, 14:48
LAngel
Игорь Акопян, ну тогда так ;)

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

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