wp_xyz hat ja schon angedeutet, dass es zu Seiteneffekten kommen kann. Nehmen wir mal folgende Klasse:
Code: Alles auswählen
type
  TMyClass = class(TObject)
    private
      FMyString: String;
      FMyStringReadCount: Integer;
    private
      function GetMyString: String;
      procedure SetMyString(AValue: String);
    public
      constructor Create;
    public
      property MyString: String read GetMyString write SetMyString;
      property MyStringReadCount: Integer read FMyStringReadCount;
  end;
function TMyClass.GetMyString: String;
begin
  Inc(FMyStringReadCount);
  Result := FMyString;
end;
procedure TMyClass.SetMyString(AValue: String);
begin
  if FMyString = AValue then Exit;
  FMyStringReadCount := 0;
  FMyString := AValue;
end;
constructor TMyClass.Create;
begin
  inherited Create;
  FMyString := 'Test';
  FMyStringReadCount := 0;
end;
Ich habe die Property 
MyString die eine Zeichenkette enthält, sowie die Property 
MyStringReadCount die angibt wie oft auf MyString lesend zugegriffen wurde (nach dem letzten Schreibzugriff).
Wenn ich jetzt also per Debugger auf MyString zugreife, wird sich auch dieser Wert ändern. Damit liefert der Debugger nicht nur eine Einsicht in den Zustand meines Systems, er verändert es. Im Grunde ist das dann 
Schrödingers Katze. Ich verändere das System um seinen Zustand in Erfahrung zu bringen. 
Und jetzt kommen wir zu der eigentlichen Frage: 
Warum brauche ich überhaupt einen Debuggerzugriff auf eine Property? 
Es fällt mir jetzt eigentlich kein sinnvoller Grund ein. Die Daten sind ja in irgendwelchen Feldern abgelegt, also muss ich auch nur diese Felder auswerten.