Wenn dein Beispiel "TMyClass" von TThread abgeleitet wäre, müsste man demnach auch klassenintern (besonders in TThread.Execute) darauf achten, dass man immer über die Property auf fMyValue zugreift und nie direkt. Richtig?
Jeder Zugriff auf Daten, die auch von ausserhalb (hier das Feld fMyValue der Thread-Instanz über eine public property) erreicht werden können, sollte nur geschützt erfolgen.
Das muss aber nicht ausschließlich über die Property erfolgen.
Delphi-Quellcode:
procedure TMyThread.Execute;
begin
MyValue := '
geschützt';
fMyValue := '
NICHT geschützt - es droht eine AV';
CS.Enter;
try
fMyValue := '
';
for i := 1
to 5
do
fMyValue := fMyValue + '
geschützt';
finally
CS.Leave;
end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)