Ins Insert muß es rein, denn wenn das z.B. ein Array of String oder IInterface ist, dann muß dort der Speicher freigegeben/genullt werden, ohne die Referenzzählung zu nutzen.
Aber beim Remove hast du Recht, da geht es auf den falschen Index. (muß
Values[High(Values)]
nullen)
Statt FillChar könnte man zwar auch InitializeRecord verwenden, aber FillChar dürfte locker ausreichen.
Bei Remove und Insert wurden Felder kopiert, womit eines der Felder nun doppelt existiert, aber die doppelte "Referenz" nicht in eventuell vorhandenen Referenzzählungen beachtet wurde, darum muß diese eventuelle Referenz "vernichtet" werden, bzw. es wirde für gewisse Typen die Speicherverwaltung nicht angepaßt.
(dyn. Array, String, Interface, Variant und Records mit den Zuvorgenannten)
Nja, Emba wird doch hoffentlich seine neu eingefühten Unittests darauf anwenden, bzw. bei Übernahme der Codes nochmal einen Blick drauf werfen.