Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.431 Beiträge
 
Delphi 7 Professional
 
#18

AW: Zeichen in Memo ersetzten und Formatierung beibehalten?!

  Alt 15. Aug 2018, 14:00
@Delphi.Narium:
Falsch, Memo1.Lines.Text ist schneller, denn Delphi (und bestimmt auch Lazarus) leiten das direkt an das Memo und holen den kompletten Text mit Einmal ab oder weisen ihn direkt zu,
genau so wie bei Memo.Text

Der Zugriff auf Einzelzeilen (Lines[]) ist langsam, vor allem beim Ändern und wenn viel Text im Memo steht.
Ja, aber das Zusammenbauen des Inhaltes von Text dauert ggfls. sehr lange. (Zumindest bei älteren Delphis). Meine praktische Erfahrung ist, dass das zeilenweise Ändern deutlich schneller ist, als erst Text "zusamenbauenzulassen", dann dadrin zu ändern und anschließend bei der Zuweisung zu Text wieder "allesauseinandernehmenzulassen".

Wenn man sich mal die Sourcen (Delphi 7) von function TStrings.GetTextStr: string;, welches beim Lesen von Text aufgerufen wird, anschaut, so wird dort bereits eine Schleife for I := 0 to Count - 1 do aufgerufen.
Und bei SetTextStr (zum Schreiben von Text), wird der übergebene String an den Zeilenumbrüchen aufgeteilt. Vorher wird Lines (vom Typ TStrings) geleert und dann jede der getrennten Zeilen per Add an die Lines angefügt.

Dies erspare ich mir bei meiner Vorgehensweise. Und niemand kann mir ernsthaft weißmachen, dass diese Ersparnis = 0 ist. Jedenfalls sind meine Programme, die häufig mit TStrings (bzw. entsprechenden Nachfahren) und recht großen Texten arbeiten, ausnahmslos alle (nach dieser Änderung) deutlich schneller geworden.
  Mit Zitat antworten Zitat