[fpc-pascal] Property write access on records

Sven Barth pascaldragon at googlemail.com
Tue Mar 3 07:55:35 CET 2020

Ryan Joseph via fpc-pascal <fpc-pascal at 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

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).


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20200303/e50ed6f6/attachment.html>

More information about the fpc-pascal mailing list