<div dir="auto"><div>For checking if it's a managed type you should use the IsManagedType intrinsic.</div><div dir="auto">You could also use it to implement the System.Move() for non-managed types. The compiler only generates the appropriate code:</div><div dir="auto"><br></div><div dir="auto">If IsManagedType(T) then</div><div dir="auto">  // for loop</div><div dir="auto">else</div><div dir="auto">  // move</div><div dir="auto"><br></div><div dir="auto">Best Regards</div><div dir="auto">Nico<br><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">Bart via fpc-pascal <<a href="mailto:fpc-pascal@lists.freepascal.org">fpc-pascal@lists.freepascal.org</a>> schrieb am Sa., 9. Jan. 2021, 22:55:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Sat, Jan 9, 2021 at 8:14 PM Yuriy Sydorov via fpc-pascal<br>
<<a href="mailto:fpc-pascal@lists.freepascal.org" target="_blank" rel="noreferrer">fpc-pascal@lists.freepascal.org</a>> wrote:<br>
<br>
> > So, I'll use a for loop to copy the data.<br>
> ><br>
> > I assume that doing Arr[Index] := Default(T) will also finalize the<br>
> > element if that element ismanaged?<br>
><br>
> For class object instances call Arr[Index].Free, for other managed types or records containing managed types<br>
> Finalize(Arr[Index]) should work.<br>
<br>
In the base class, is there a way to check wether Arr[Index] is an<br>
object instance or a managed type or a datatype containing a managed<br>
type?<br>
Now the for loop (I abandoned the use of Move) does something like this:<br>
  Arr[NewIndex] := Arr[OldIndex];  //do I have to finalize/free<br>
Arr[NewIndex] also in this case?<br>
  Arr[OldIndex] := Default(T);  //I understand this is not enough in those cases<br>
<br>
I could of course add an (empty) method FinalizeOrFreeElement(Elem:<br>
T); to the base class and call that inside the loop, but that feels a<br>
bit sloppy.<br>
<br>
-- <br>
Bart<br>
_______________________________________________<br>
fpc-pascal maillist  -  <a href="mailto:fpc-pascal@lists.freepascal.org" target="_blank" rel="noreferrer">fpc-pascal@lists.freepascal.org</a><br>
<a href="https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal" rel="noreferrer noreferrer" target="_blank">https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal</a><br>
</blockquote></div></div></div>