![]() |
TMemo vs. TRichEdit (Geschwindigkeit)
Die Datei "wetter.txt" ist ca. 57 KB groß, knapp 2000 Zeilen. In ihr suche ich nach einer bestimmten Zeichenfolge und will dann alle darüberliegenden Zeilen weglöschen.
Kein Problem, aber mit TMemo dauert das fast zehn Sekunden, mit TRichEdit kaum einen Blinzler. Jeweils wordwrap false und beim TRichEdit plaintext true. Rein interessehalber, wieso ist TMemo da so langsam? Bitte - Danke! MfG
Delphi-Quellcode:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; Button2: TButton; RichEdit1: TRichEdit; Button3: TButton; Button4: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.LoadFromFile('e:\wetter.txt'); end; procedure TForm1.Button2Click(Sender: TObject); var s: string; i, j: Integer; begin Screen.Cursor := crHourGlass; j := 0; for i := 0 to Memo1.Lines.Count - 1 do begin s := Memo1.Lines[i]; if pos('<div class="weather-current">', s) <> 0 then begin j := i; //MessageBox(Handle, PChar(IntToStr(j)), 'Gefunden', mb_Ok or mb_IconStop or mb_DefButton1); break; end; end; Memo1.Lines.BeginUpdate; for i := 1 to j do Memo1.Lines.Delete(0); Memo1.Lines.EndUpdate; Screen.Cursor := crDefault; end; procedure TForm1.Button3Click(Sender: TObject); begin RichEdit1.Lines.LoadFromFile('e:\wetter.txt'); end; procedure TForm1.Button4Click(Sender: TObject); var s: string; i, j: Integer; begin Screen.Cursor := crHourGlass; j := 0; for i := 0 to RichEdit1.Lines.Count - 1 do begin s := RichEdit1.Lines[i]; if pos('<div class="weather-current">', s) <> 0 then begin j := i; //MessageBox(Handle, PChar(IntToStr(j)), 'Gefunden', mb_Ok or mb_IconStop or mb_DefButton1); break; end; end; RichEdit1.Lines.BeginUpdate; for i := 1 to j do Richedit1.Lines.Delete(0); Richedit1.Lines.EndUpdate; Screen.Cursor := crDefault; end; end. |
AW: TMemo vs. TRichEdit (Geschwindigkeit)
Zitat:
Dein Code solte hiermit besser laufen. (Datei wird trotzdem erstmal in Memo geladen auch wenn es ein tmpList.LoadFormFile() auch tun würde):
Delphi-Quellcode:
Ich würde aber eher mit TWebBrowser und mittels Document als IHTMLDocument arbeiten um gleich die Vorteile eines korrekt geparsten HTML-Dokuments zu haben. Ich tipp mal drauf das du wetter.txt per Indy herunter geladen hast.
procedure TForm1.Button2Click(Sender: TObject);
var s: string; i, j: Integer; tmpList: TStringList; begin Screen.Cursor := crHourGlass; tmpList := TStringList.Create; try tmpList.Assign(Memo1.Lines); // dann mit tmpList arbeiten finally Memo1.Lines.Clear; Screen.Curser := crDefault; end; end; |
AW: TMemo vs. TRichEdit (Geschwindigkeit)
Zitat:
Den Text hole ich mir mit GetHTML aus der Code-Library. Wie schon geschrieben, bin ich mit der Geschwindigkeit von TRichEdit ja sehr zufrieden, obwohl ich das Gleiche wie beim TMemo mache. Nur wundert es mich eben, weshalb TMemo da so langsam ist... |
AW: TMemo vs. TRichEdit (Geschwindigkeit)
TMemo, ist einfach so langsam.
PS: Das alte Notepad im Windows XP nutzte das selbe "MEMO"-Control, wie Delphi. Das neue Notepad in Win7 nutzt jetzt auch ein Richedit ( 2.0? ... hab nicht nachgesehn). Und siehe da, Notpad ist nun auch "extrem" schnell ... PS: Das alte Notepad nutzte auch nichtmal sowas wie BeginUpdate, wenn man da "alle" Vorkommen ersetzen ließ. |
AW: TMemo vs. TRichEdit (Geschwindigkeit)
OK, Tatsachen muß man akzeptieren :shock:
Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz