Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: TreeViews - Einträge löschen

  Alt 29. Feb 2008, 08:21
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.
  Mit Zitat antworten Zitat