[fpc-pascal] Question about System.Move()
Bart
bartjunk64 at gmail.com
Sat Jan 9 22:54:05 CET 2021
On Sat, Jan 9, 2021 at 8:14 PM Yuriy Sydorov via fpc-pascal
<fpc-pascal at lists.freepascal.org> wrote:
> > So, I'll use a for loop to copy the data.
> >
> > I assume that doing Arr[Index] := Default(T) will also finalize the
> > element if that element ismanaged?
>
> For class object instances call Arr[Index].Free, for other managed types or records containing managed types
> Finalize(Arr[Index]) should work.
In the base class, is there a way to check wether Arr[Index] is an
object instance or a managed type or a datatype containing a managed
type?
Now the for loop (I abandoned the use of Move) does something like this:
Arr[NewIndex] := Arr[OldIndex]; //do I have to finalize/free
Arr[NewIndex] also in this case?
Arr[OldIndex] := Default(T); //I understand this is not enough in those cases
I could of course add an (empty) method FinalizeOrFreeElement(Elem:
T); to the base class and call that inside the loop, but that feels a
bit sloppy.
--
Bart
More information about the fpc-pascal
mailing list