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.