Moin,
noch eine Anmerkung zum Code von Heiko, damit er weiß, was falsch ist:
Zu Beginn wird einmalig die Anzahl der Schleifendurchläufe ermittelt (
Items.Count). Werden in der Schleife nun Einträge gelöscht, passt sich die Anzahl der Durchläufe nicht an und die Schleife läuft, sofern mindestens ein Eintrag entfernt wurde, immer zu weit. Somit wird auf Indizes zugegriffen, die es nicht mehr gibt.
@taaktaak: Der Zugriff auf die
VCL ist allgemein verhältnismäßig langsam. Ob es beim TreeView besonders ausgeprägt ist, weiß ich nicht, denke aber, dass man mit
Delphi-Quellcode:
TreeView1.Items.BeginUpdate;
// hier mit den Items arbeiten (Löschen etc.)
TreeView1.Items.EndUpdate;
einen deutlichen Performanceschub erreichen kann.
Grüße
Edit: Da der Fehler "Ungültiger Index" oder wie auch immer, zur Laufzeit auftritt, ist es nicht der Compiler, der diesen Fehler anzeigt. Das Programm wurde bereits vollständig kompiliert, somit hat der Compiler ausgedient.