Chcę sobie napisać rekord, który jednocześnie będzie jakby dynamiczną tablicą rekordów, obudowaną w funkcje i nie mogę sobie poradzić z uzyskaniem właściwego rezultatu.
type
TCell = record
Value: Integer;
end;
TList = record
strict private
ConCell: array of TCell;
function GetCell(Index: Integer): TCell;
property Cell[Index: Integer]: TCell read GetCell; default;
public
procedure SetSize(pSize: Integer);
procedure Clear;
end;
var
List: TList
=====
function TList.GetCell;
begin
Result:= ConCell[Index];
end;
Dzięki takiej konstrukcji mogę raz "zarządzać" całą listą i np. chcąc ją wyczyścić albo zmienić jej wielkość, robię tak:
List.Clear;
List.SetSize(4);
A potem chcąc uzyskać dostęp do poszczególnych komórek listy, robię tak:
JakasZmiena:= List[0].Value;
zamiast:
JakasZmienna:= List.ConCell[0].Value;
Teoretycznie niewiele, ale to eleganckie rozwiązanie :). Sęk w tym, że to działa tylko przy odczycie i nie wiem jak to zakodować tak, żeby pozwoliło mi także zapisywać poszczególne zmienne w komórkach. Właściwość PropCell jako metodę zapisu (write) łyknie tylko coś takiego (z uwagi na zgodność typów):
procedure SetCell(Index: Integer; pCell: TCell);
Ale to odpada, bo w ten sposób mogę tylko przypisywać całe komórki, np.:
List[0]:= JakasKomorka; //JakasKomorka to zmienna typu TCell
Na coś takiego już mi nie pozwoli:
List[0].Value:= 167;
Da się to jakoś obejść?