[fpc-pascal] Error: Argument cannot be assigned to

Martin fpc at mfriebe.de
Sun Jun 4 17:49:05 CEST 2023

On 04/06/2023 15:04, Juha Manninen via fpc-pascal wrote:
> Why the following code fails to compile?
>   TMyRec = record
> property
>     RecInstance: TMyRec read fRecInstance;// write fRecInstance;
> MyObj.RecInstance.ii := 123;
> Access through property seems to be the problem. Accessing 
> fRecInstance directly works.

A property enforces that any code you write will work even if you change 
the property to a getter/setter.
Or in other words, it will fail any code that would not work.

If this was a getter, it would be
   function GetRec: TMyRec;

And that returns a *copy* in a temporary location of the record.
Technically you can modify the members of the temp record (just to have 
the work thrown away afterwards).

So I guess the compiler forbids it, because the only case it would ever 
be done is: by mistake.

More information about the fpc-pascal mailing list