Zitat von
P80286:
Zum einen ist ein TMemo eigentlich nur für die Anzeige gedacht.
Ich nutze das ganze ja auch nur als Anzeige. Daher, sind die Daten nur von geringer Wichtigkeit. Ich möchte lediglich einen gewissen Zeitraum der vergangenen Daten sichtbar erhalten.
Die Lösung von:
Zitat von
hathor:
Delphi-Quellcode:
const
Memo1Limit = 10;
implementation
{$R *.dfm}
procedure TForm2.Memo1Change(Sender: TObject);
begin
if Memo1.lines.Count > Memo1Limit then
Memo1.Lines.Delete(0);
end;
nutze ich ja bereits. Allerdings, wird das OnChange ja bei jeder Änderung des Inhaltes ausgelöst. Soll heißen, eine Zeile hat bei mir etwa 80 Zeichen. Davon möchte ich z.B. die letzten 2000 sichtbar erhalten. Daraus folgt...
if TMemo.Lines.Count >= 2000 then TMemo.Lines.Delete[0]
und das ins OnChange.
Nachteil: 80 Zeichen/Zeile -> 80 x OnChange ohne Sinn, Weiter gedacht: 80 Zeichen x 2000 Zeilen = 80.000 Zeichen -> 80.000 x OnChange, bis das erste mal die Funktion
TMemo.Lines.Delete[0]
ausgeführt wird. Nicht zu vergessen, die fehlenden Sonderzeichen wie Zeilenvorschub, Leerzeichen etc..