Ryan Joseph via fpc-pascal <fpc-pascal@lists.freepascal.org> schrieb am
Mo., 2. März 2020, 22:47:

> In the snippet below why isn't it an error to write to a field of the
> read-only property? I was hoping this would give me some type safety but it
> just writes to a temp variable and does nothing. Not very helpful if you
> ask me.
>
>
> =========================
>
> type
>   TSheet = record
>       m_tableSize: TVec2i;
>       function GetTableSize: TVec2i;
>       property TableSize: TVec2i read GetTableSize;
>   end;
>
> var
>   sheet: TSheet;
> begin
>   // why isn't this an error?
>   sheet.x := 1;
> end;
>

I assume you mean "sheet.TableSize.x"? Otherwise your example makes no
sense...

In that case: you are working on a temporary copy of the record. It does
not affect the TSheet instance anymore (that's essentially the same reason
why C operators or var parameters are not allowed for properties).

Regards,
Sven

>
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to