AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Anzeige des Memos beim bearbeiten unterdrücken?
Thema durchsuchen
Ansicht
Themen-Optionen

Anzeige des Memos beim bearbeiten unterdrücken?

Ein Thema von moelski · begonnen am 20. Jan 2006 · letzter Beitrag vom 20. Jan 2006
Antwort Antwort
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Anzeige des Memos beim bearbeiten unterdrücken?

  Alt 20. Jan 2006, 06:22
Moin!

Ich habe mir da ein kleines Tool gebastelt. Damit kann ich Logfiles laden.
Da in diesen LogFiles immer sehr viele unnütze Zeilen sind, habe ich einen kleinen Filter geschrieben, der nach einer bestimmten Zeichenkette sucht und wenn diese vorhanden ist, die Zeile löscht. Das schaut dann so:
Delphi-Quellcode:
procedure TFormLogFilter.Button1Click(Sender: TObject);
Var _i: Integer;
    _aktuelleZeile: String;
begin
  for _i := Form1.Memo.Lines.Count downto 0 do begin
    if pos(Edit1.Text, Form1.Memo.Lines.Strings[_i]) > 0 then
      Form1.Memo.Lines.Delete(_i);
    if _i mod 100 = 0 then Application.ProcessMessages;
  end;
end;
Funktioniert ja, aber wenn das Memo sich ständig neu aktualisieren muss, dauert so ein Filter bei ~80000 Zeilen schonmal 3-7 Minuten ...
Deshalb mal 2 Fragen:
1) Gibt es evtl. eine bessere Methode um sowas zu realisieren?
2) Kann ich während der Suche die Änderungen im Memo unterdrücken? Also so das da erstmal nix passiert? Erst zum Schluss dann wieder freigeben und man sieht den "neuen" gefilterten Text.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Anzeige des Memos beim bearbeiten unterdrücken?

  Alt 20. Jan 2006, 06:38
Vorher:
Memo1.Lines.BeginUpdate; nachher:
Memo1.Lines.EndUpdate;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Anzeige des Memos beim bearbeiten unterdrücken?

  Alt 20. Jan 2006, 06:51
Danke !

Funzt super.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#4

Re: Anzeige des Memos beim bearbeiten unterdrücken?

  Alt 20. Jan 2006, 07:02
Zitat:
Delphi-Quellcode:
procedure TFormLogFilter.Button1Click(Sender: TObject);
Var _i: Integer;
    _aktuelleZeile: String;
begin
  for _i := Form1.Memo.Lines.Count downto 0 do begin
    if pos(Edit1.Text, Form1.Memo.Lines.Strings[_i]) > 0 then
      Form1.Memo.Lines.Delete(_i);
    if _i mod 100 = 0 then Application.ProcessMessages;
  end;
end;
Was du da machst, kann schnell zu Fehlern führen.
Du veränderst innerhalb der Schleife dein Memo, dadurch ändert sich die Anzahl/Position der Zeilen.
Wenn du eine Zeile löschst, überspringst du die nächste Zeile, da alle Zeilen um eine Zeile aufrücken, du aber durch die Erhöhung von "_i" eine Zeile weiterspringst.
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Anzeige des Memos beim bearbeiten unterdrücken?

  Alt 20. Jan 2006, 07:06
@ste_ett: Deine Vermutung ist falsch. Er erhöht den Schleifenzähler nicht sondern arbeitet mit "downto". Somit läuft die schleife rückwärts
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Anzeige des Memos beim bearbeiten unterdrücken?

  Alt 20. Jan 2006, 07:45
Moin !

ebend, das läuft rückwärts ab und funktioniert mit Begin/Endupdate jetzt auch angenehm schnell.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz