Eine Frage zu Properties hätte ich jetzt noch.
Nutzt man diese um intuitiver arbeiten zu können?
Oder gibt es noch andere unterschiede zu Standard getter und setter Methoden wie man sie vielleicht aus Java kennt?
Properties können noch als published deklariert werden, dann kann man per Runtime Type Information (
RTTI) darauf zugreifen. Neuere Delphis können das auch für nicht-published Properties.
Aber das geht jetzt deutlch über die normale Verwendung von Properties hinaus.
Anders als bei Java kann aber eine Property auch direkt auf ein Feld verweisen oder ein Feld direkt lesen aber per Setter-Methode schreiben:
Delphi-Quellcode:
type
TMyClass
private
FMyField: integer;
procedure SetMyField(_Value: integer);
public
property MyField: integer read FMyField write SetMyField;
end;
Ach ja, dann gibt es noch Array-Properties:
Delphi-Quellcode:
type
TMyClass
private
function GetMyProperty(_Idx: integer): string;
procedure SetMyProperty(_Idx: integer, const _Value: string);
public
property MyProperty[_Idx: integer]: string read GetMyProeprty write SetMyProperty;
Eine solche Array-Property kann auch noch als default deklariert werden, so das man beim Zugriff den Namen weglassen kann. Das wird z.B. bei TStringList verwendet, eigentlich muesste man da auf die Items-Property zugreifen, es geht aber auch so:
Delphi-Quellcode:
var
sl: TStringList;
begin
sl := TStringList.Create;
sl.Add('bla');
WriteLn(sl[0]);
WriteLn(sl.Items[0]);