![]() |
Properties überwachen
Hallo zusammen,
Delphi-Quellcode:
TTest = class private FGeladen: Boolean; FText: String; function GetText: String; public property Geladen: Boolean read FGeladen; property Text: String read GetText write FText; constructor Create; end; { TTest } constructor TTest.Create; begin FGeladen := False; FText := ''; end; function TTest.GetText: String; begin if not Self.Geladen then begin FText := '123456'; FGeladen := True; end; Result := FText; end; procedure TForm1.FormCreate(Sender: TObject); var lTest: TTest; lText: String; begin lTest := TTest.Create; try lText := lTest.Text; // <------- finally lTest.Free; end; end; Wenn ich an der markierten Stelle einen Haltepunkt setze und den Ausdruck lTest.Text im Ausdrucksüberwacher anzeige oder mit der Maus drüber fahre, wird direkt schon die GetMethode ausgeführt. Selbst wenn "Seiteneffekte und Funktionsaufrufe zulassen" abgeschaltet ist. Das führt dazu, dass der Ausdrucksüberwacher mir Daten anzeigt die an der Stelle ja eigentlich noch gar nicht da sein sollten. Merkwürdig ist auch, dass wenn man in TTest.GetText einen Haltepunkt setzt beim überwachen von lTest.Text er da nicht reinspringt. Kann man das verhalten irgendwie ändern? Oder kann mir jemand das verhalten erklären? Würde ich lTest.GetText verwenden, verhält es sich nicht so. |
AW: Properties überwachen
Liste der Anhänge anzeigen (Anzahl: 1)
Erklären kann ich das nicht wirklich.
Aber es ist nun mal so, dass der Debugger auch Methoden auswerten kann. Wenn der Debugger das richtige Ergebnis anzeigen soll, muss er durch den Getter. Birgt natürlich Gefahren! Im angehangenen Screenshot kann man sehen, dass durch den überwachten Ausdruck (ausgeschaltet) den Ablauf in der Routine ändert. Schalte ich den Ausdruck ein, dann wird die Zuweisung auf LText nicht ausgeführt. Keine Ahnung, ob man das beeinflussen kann. Man muss dann halt nicht Text sondern FText überwachen. Frank |
AW: Properties überwachen
Zitat:
* nur anzeigen, wo direkt auf ein Feld/Parameter/Variable verlinkt wird * nichts ausführen, was Funktionen (z.B. Getter) sind OK, eine Möglichkeit "harmlose" Methoden als "statisch" zu kennzeichnen fehlt aber auch, damit man bei einem Edit oder einer StringList dennoch den Text sehen kann. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz