Slova read a write (jsou to jen syntaktické konstrukce, ne metody ale metody mohou zavolat) jsou úplně stejné, jako pro normální vlastnost (nebo můžou i chybět pro vlastnost "jen ke čtení" nebo "Jen k zápisu"). Direktiva DEFAULT jen říká kompilátoru, že volání je možno zkrátit zápis při použití vlastnosti a kompilátor to přeloží, jako kdyby se to volalo celé. Označuje defaultní (implicitní) vlastnost, ke které se přistupuje jen jménem objektu.
Příklad (jak si to asi představuješ - asi chceš vidět i jak se vlastnosti indexují ):
type
TPokus = object
private
fItems: array[0..15, 0..15] of Byte;
procedure SetItems (I, J: integer; Value: byte);
function GetItems (I, J: integer): byte;
public //(nebo PROTECTED jestli se k tomu přistupuje jen z nadtřídy)
property Items [I, J: integer]: byte read GetItems write SetItems; default;
end;
// Poznámka: V čtenáři/zapisovateli nemám ošetřen index mimo pole
procedure TPokus.SetItems (I, J: integer; Value: byte);
begin
fItems [I, J] := Value
end;
function TPokus.GetItems (I, J: integer);
begin
Result := fItems [I, J]
end;
K vlastnosti pak můžeš přistupovat dvojím způsobem (díky frázi DEFAULT):
Pokus: TPokus;
...
Pokus := TPokus.Create ();
...
Pokus.Items [1, 1] := 255;
// nebo totéž
Pokus [1, 1] := 255;
BTW tak jak jsi to uvedl ty, to nejsou vlastnosti (musí být uvedeny slovem PROPERTY) ale členy.