Страница 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;