Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#11

Re: Performanceproblem mit ca. 30000 Listboxeinträgen

  Alt 12. Mai 2005, 17:30
TListBox.Items[] hat zwar den Datentyp TStrings, ist aber nicht von TStringList abgeleitet
sondern gehört zur Klasse TListBoxStrings !!!
Hier ein kleiner Ausschnitt aus Unit StdCtrls:
Delphi-Quellcode:
  TListBoxStrings = class(TStrings)
  private
    ListBox: TCustomListBox;
  protected
    procedure Put(Index: Integer; const S: string); override;
    function Get(Index: Integer): string; override;
Die Methoden Get und Put sind um Welten langsamer als TStringList.Get/Put.
Da nutzt auch BeginUpdate nicht viel!!

Also geht der WorkAround so:
Alle Items auf ein TStringList-Objekt kopieren, auf dieser StringListe arbeiten und am Ende zurückkopieren.
Delphi-Quellcode:
liste := TStringList.Create;
liste.Assign(ListBox1.Items);

// auf Liste arbeiten
....

// und zurück
ListBox1.Items := liste;
liste.Free;
Andreas
  Mit Zitat antworten Zitat