Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#21

AW: Array mit Recordinhalten löschen

  Alt 3. Dez 2012, 12:28
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat