Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Warum ist das Löschen einer Zeile aus einer Memo so langsam?

  Alt 25. Mär 2013, 17:33
Hallo-

Ich wundere mich:
  • 500 Zeilen in meiner Memo
  • Ich möchte nun die ersten 400 löschen
  • Das Löschen mittels 400x Lines.Delete(index) dauert fast eine geschlagene Sekunde!!

Gibt es keine bessere Methode, die ersten x Strings aus einem TStrings -Objekt zu entfernen?


Entferne ich die ungewollten Zeilen folgendermaßen ist die Sache blitzschnell erledigt:
Delphi-Quellcode:
with someMemo do
   if Lines.Count > logMemoMaxLines then begin
      Lines.BeginUpdate();
      SelStart := 0;
      // Quelle: http://borland.newsgroups.archived.at/public.delphi.rtl.win32/200609/0609161352.html
      SelLength := Perform(EM_LINEINDEX, logMemoMaxLinesClear, 0);
      SelText := '';
      Lines.EndUpdate();
   end;
Warum ist das so?
  Mit Zitat antworten Zitat