[fpc-devel] FPC SetDynArrayProp

silvioprog silvioprog at gmail.com
Mon Nov 28 19:25:37 CET 2016

On Mon, Nov 28, 2016 at 2:31 PM, Ondrej Pokorny <lazarus at kluug.net> wrote:

> On 28.11.2016 17:37, Ondrej Pokorny wrote:
>> Is SetObjectProp safe?
> OK, no it is not - it doesn't increment the reference count for properties
> without a setter:
> property Data: TBytes write FBytes;
> Ondrej

Yes, and it seems you can't handle properties setting field, eg: "property
Data: TBytes read FData write FData".

An workaround just for testing:

procedure SetDynArrayProp(AInstance: TObject; APropInfo: PPropInfo; const
  // Caution: it works only with fields! But we can implement the full
version checking methods too, getting some ideas from SetRawInterfaceProp
@AValue, APropInfo^.PropType, 1);

//    {$IFDEF FPC}
    SetDynArrayProp(O, PropInfo, A);
//    {$ELSE}
//    SetDynArrayProp(O, PropInfo, A);
//    {$ENDIF}

Anyway including (Get)SetDynArrayProp() to typinfo solve the problem
because it can check if property's set is a field or a method.

Silvio Cl├ęcio
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20161128/a987d9d4/attachment.html>

More information about the fpc-devel mailing list