Zitat:
Sobald lesend auf ein Property zugegriffen wird (also nicht Property := ...), wird READ verwendet, welches eine lokale Kopie des Wertes erstellt.
Das stimmt so nicht. Vielmehr dient read/write nur der Zugriffskontrolle zur Compilezeit. Beim ShowMessage wird hier intern (
asm-code) keine Kopie von fMyRecord erstellt.
Delphi-Quellcode:
TMyClass=class(TObject)
private
fMyRecord: TMyRecord;
public
property MyRecord: TMyRecord read fMyRecord;
end;
[...]
ShowMessage(MyClassInstance.MyRecord.Value);
Der Code beim ShowMessage ist identisch mit:
Delphi-Quellcode:
TMyClass=class(TObject)
public
MyRecord: TMyRecord;
end;
[...]
ShowMessage(MyClassInstance.MyRecord.Value);
Wäre ja schlimm der Zugriff auf eine Variable Länger dauert nur weil man den Scope oder dergleichen einschränkt.