Einzelnen Beitrag anzeigen

Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: TObjektList mit 2 oder mehr TObjekte

  Alt 31. Dez 2018, 11:15
hab jetzt noch ein 2 property hinzugefügt als itemindex.
Hätt ich gleich machen sollen
Dann würde mich jetzt mal interessieren, was bei deinem Programm passiert wenn du folgendes Szenario hast:

  • Du speicherst 10 Objekte in deiner ObjectList.
  • Die zusätzliche Property ItemIndex deiner Objects sind von 0-9 durchnummeriert
  • Du löschst das vierte (oder was auch immer für ein) Element/Object aus der Liste
  • Du durchläufst die Liste und willst irgendein spezielles Object haben. Sagen wir das, bei dem deine ItemIndex Property auf 9 steht
  • Du greifst auf das jetzt 9. Object in der Liste zu und nimmst dir den ItemIndex
  • Der Item Index ist 9, aber der größte Index ist 8, da nur noch 9 Objekte in deiner Liste sind
  • ... probier aus was passiert

Ein anderer Fall wäre, dass du auf ein Object mit einem bestimmten ItemIndex zugreifen möchtest, dieses aber in Wirklichkeit von einem anderen Typen ist, da sich durch das Löschen von Elementen die Reihenfolge verschoben hat. Also spätestens beim Cast auf ein anderes Object bzw. beim Zugriff auf eine Property dieses Objects knallt es dann.

Also hast du nur zwei Möglichkeiten:
  1. Du musst jedes Mal wenn du ein Element aus der Liste löschen willst den ItemIndex aller nachfolgenden Elemente korrigieren
  2. Du benutzt einfach zwei unterschiedliche Listen für dein Problem
  3. (Optional: Du machst dir eine eigene Klasse die wiederum in einer generischen TObjectList<T> gespeichert wird und verwaltest dort deine Daten)
  Mit Zitat antworten Zitat