<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2017-10-09 14:43 GMT+02:00 Marcos Douglas B. Santos <span dir="ltr"><<a href="mailto:md@delfire.net" target="_blank">md@delfire.net</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">This TAutoFree just "put" the "finally" and call .Free for an array of<br>
objects or does it something else?<br>
Could you send the link of the implementation?<br></blockquote><div><br></div><div>"One" and "Several" returns IAutoFree interface. Implementation of that interface contains TObject/array of TObject fields.  TObject/array of TObject is freed when interface goes out of the scope (so yes you can omit "finally", the "Free" call for allocated objects by TAutoFree is guaranteed). Documentation:</div><div><br></div><div><a href="https://synopse.info/files/html/api-1.18/SynCommons.html#TAUTOFREE" target="_blank">https://synopse.info/files/<wbr>html/api-1.18/SynCommons.html#<wbr>TAUTOFREE</a></div><div><a href="https://synopse.info/files/html/Synopse%20mORMot%20Framework%20SAD%201.18.html#TITL_130" target="_blank">https://synopse.info/files/<wbr>html/Synopse%20mORMot%<wbr>20Framework%20SAD%201.18.html#<wbr>TITL_130</a> </div><div><br></div><div>please note that FPC behaves different than Delphi, so you can't do the Delphi trick:</div><div><br></div><div>===code begin===</div><div>var</div><div>  o: TFoo;</div><div>begin</div><div>  TAutoFree.One(o, TFoo.Create); // for such code interface is released at this place in FPC</div><div>  WriteLn(o.SomeMethod); // AV i FPC</div><div>end; // in Delphi returned interface by TAutoFree.One is released here</div><div>===code end===</div><div><br></div><div>so correct code for FPC is:</div><div><br></div><div>===code begin===</div><div><div>var</div><div>  o: TFoo;</div><div>begin</div><div>  with TAutoFree.One(o, TFoo.Create) do </div><div>  begin</div><div>    WriteLn(o.SomeMethod);</div><div>    o.SomeProperty := 123;</div><div>  end;</div><div>end; </div></div><div>===code end===</div><div><br></div><div>Maybe at some point the first code listing will be valid in FPC too (by usage of new modeswitch SCOPEDINTERFACEDESTROY). </div><div><br></div><div>implementation of TAutoFree can be found here:</div><div><br></div><div><a href="https://github.com/synopse/mORMot/blob/master/SynCommons.pas" target="_blank">https://github.com/synopse/<wbr>mORMot/blob/master/SynCommons.<wbr>pas</a></div></div><div><br></div>-- <br><div class="gmail-m_5301729206612068654gmail_signature"><div dir="ltr"><div>Best regards,<br>Maciej Izak</div></div></div>
</div></div>