Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#3

AW: Record als property?

  Alt 14. Jul 2011, 18:17
jupp

Aus Sicht des Programmierers:
Code:
strict private    nur innerhalb der selben Klassendeklaration verfügbar
private           ..., aber innerhalb der Unit unbeschränkt
strict protected  nur innerhalb der eigenen und in abgeleiteten klassen verfügbar
protected         ..., aber innerhalb der Unit unbeschränkt
public            überall sichtbar wo auch die Klasse sichtbar ist
published         ... und im OI sichtbar
Das Strict wurde erst recht spät implementiert.

Aber im OI wird nur etwas angezeigt, was einfache Standardtypen sind, oder wofür entsprechende Property-Erweiterungen installiert sind.
Für einen irgendeinen Record ist standarmäßig garnichts installiert.

property Pos: TPoint read ... write ...; kannste vergessen.


In neueren Delphis meckert der Compiler sowas auch gleich an.
Früher gab es zur Leufzeit kleine Probleme, bei einer Zuweisung ... es wirde einfach nichts zugewiesen.


MyObject.Pos.X := 123; .
wird nach
Delphi-Quellcode:
temp := MyObject.Pos;
temp.X := 123;
übersetzt. (temp = delphiinterne temporäre Variable)

Und wie man sich denken kann, wird somit nichts an Pos übergeben, da nur der Getter aufgerufen wird.
Kannste gerne mal ganz leicht ausprobieren, indem du einen Setter implementierst und schaust, ob man mit dem Debugger darin landet.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (14. Jul 2011 um 18:19 Uhr)
  Mit Zitat antworten Zitat