private
fInteger:Integer;
public
getal:integer read fInteger write fInteger;
...
begin
Inc(getal);
end;
[Error] Unit1.pas(44): E2064 Left side cannot be assigned to
Waarom is het niet mogelijk om een integere property te verhogen of verlagen door middel van de standaard procedures Inc() en Dec().
Dit komt doordat deze functies geoptimaliseerde code produceren bij compilatie voor het verhogen van een getal. Propertys daarintegen zijn een manier voor luie programmeurs om minder code te schrijven.
Compiletime worden propertys zoals getal := 10; omgeschreven naar pseudocode met onzichtbare get/set functies.
Dus als we iets doen als Inc(getal) dan zal het omgeschreven worden naar pseudocode "set := get + 1"; vanwege het optimaliserende karakter van Inc/Dec() is deze omschrijving niet mogelijk.
Oplossing: schrijf gewoon "property := property + 1" :-)