<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2014-05-16 18:13 GMT-03:00 Krzysztof <span dir="ltr"><<a href="mailto:dibo20@wp.pl" target="_blank">dibo20@wp.pl</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


<div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div>Hi,<br><br></div>This article is quite clear for me: <a href="http://wiki.freepascal.org/for-in_loop" target="_blank">http://wiki.freepascal.org/for-in_loop</a><br>



<br></div>But let say that I have this class:<br><br></div>TMyList = class<br></div>private<br></div>  FList: TList<br></div>public<br></div>  constructor Create;<br></div>  destructor Destroy;<br><br></div><div>  procedure Add;<br>



</div><div>  procedure Remove;<br></div>end;<br><br></div>Now I want to do:<br><br></div>for a in MyClass do<br></div>begin<br><br></div>end;<br><br></div>Can I do this without creating new enumerator? I mean pass enumerator from FList? I'm confused because if I create function:<br>



<br></div>function TMyClass.GetEnumerator: TListEnumerator<br></div>begin<br></div>  Result := FList.GetEnumerator;<div>end;<br><div><div><div><div><div><div><div><br></div><div>... then FList.GetEnumerator create new object (TListEnumerator.Create(Self)). My question is, where it is freed? Is it freed automatically on runtime after exit from loop? I don't want memory leak<br>



<br>Regards</div></div></div></div></div></div></div></div></div></blockquote></div><div class="gmail_extra"><br></div><div class="gmail_extra">You need to create a enumerator, and it will be freed by your owner. See internal implementation:</div>


<div class="gmail_extra"><br></div><div class="gmail_extra">Function  TComponent.GetEnumerator: TComponentEnumerator;</div><div class="gmail_extra"><br></div><div class="gmail_extra">begin</div><div class="gmail_extra">  Result:=TComponentEnumerator.Create(Self); // Self is the owner component, and it will free your enumerator automatically in destroy</div>


<div class="gmail_extra">end;</div></div><div class="gmail_extra"><div><br></div>-- <br>Silvio Clécio<br>My public projects - <a href="http://github.com/silvioprog" target="_blank">github.com/silvioprog</a>
</div></div>