Einzelnen Beitrag anzeigen

choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Componenten freigeben... Laufzeitfehler ??!

  Alt 26. Nov 2003, 14:55
Die Eigenschaft Components ist eine "Liste" (genauer: Array-Eigenschaft) von Komponenten und sie enthält genau ComponentCount viele Einträge. Wenn Du einen Eintrag entfernst, besitzt sie folglich weniger Einträge, so dass ein Löschen des dritten Eintrags einer Liste mit drei Einträgen zur Folge hat, dass ein Zugriff auf den dritten Eintrag zum Fehler führt: Er existiert nicht länger.
Darüber hinaus ist der Destruktor von TComponent so implementiert, dass sich die Exemplar selbstständig aus der "Liste" Components des durch Owner referenzierten Objekts austragen, so dass Du einfach
Delphi-Quellcode:
with AnObject do
  while ComponentCount>0 do
    Components[0].Free;
schreiben kannst.
gruß, choose
  Mit Zitat antworten Zitat