![]() |
Re: Suche effizienter machen
Na, der Vorschlag von "nahpets" mit der Zusammenfassung ist nur sinnvoll, wenn diese Prüfung innerhalb der Schleife immer wieder durchlaufen würde. Nun steht sie aber vor der Schleife. dann ist das nicht mehr notwendig. MAn sollte nicht auf =true prüfen. Begründungen gibt's hier im Forum an verscheidener Stelle.
Muss zugeben, das ich deinen Schnipsel immer weniger verstehe. Du hast 3 Edits, eine Stringliste und ein Memo. Die Worte, die in den Edits und der Stringliste enthalten sind, sollen im Memo fett markiert werden? Du vergleichst Edits/Liste mit LowerCase, dennoch dürfen die Listeneinträge nicht in LowerCase verändert werden. Sorry, da blick ich nicht durch... // edit: Ja, Millisekunden. Schau mal in die Win-API Hilfe. |
Re: Suche effizienter machen
Ja es sind Millisekunden.
Wenn du jede Version nur einmal durchführst ist das nicht wirklich signifikant.
Delphi-Quellcode:
So wird die Arbeit jetzt 100 mal gemacht.
const C_COUNT = 100;
var LBegin, LEnd, i: integer; LTime: String; begin LBegin := GetTickCount(); try for i := 0 to C_COUNT do begin HierMacheIchDieArbeit(); end; finally LEnd := GetTickCount; EinLabel.Caption := IntToStr(LEnd - LBegin); end; end; Umso öfter es möglich ist in annehmbarer Zeit umso öfter solltest du die Schleife laufen lassen. Wichtig wäre auch, daß du das Ganze startest und bis zum Ende den Rechner in Ruhe lässt. Aktionen nebenbei kosten Prozesserzeit. |
Re: Suche effizienter machen
Zitat:
ich speicher den gesamten text in die Stringliste, wenn auf Suchbutton geklickt wurde, dann noch in die andere Stringliste, um mit der danach mit einer suche dort zu suchen dort ändert sich der Text, logischerweise. Aber der orginaltext darf sich ja nicht ändern. Jedenfalls wird dann bei der suche der komplette text klein angezeigt. ~.~ Text doof geschrieben aber der hat damit ja auch eigentlich nichts zutun. EDIT: um genau zu sein sind es 3 Stringlisten Orignaltext Zwischenspeicher Suchergebnis @Tyrael Y. kanns ja dann noch mal machen, aber ob nu 1 sekunden hin oder her. Gibt es nichts was paar Sek mehr bringen kann? |
Re: Suche effizienter machen
Zitat:
Machst du es mit einer Schleife und lässt es sehr oft laufen, werden sich die Unterschiede aufaddieren und du wirst Unterschiede von mehreren Sekunden/Minuten sehen, je nachdem wie lang die Schleife läuft. |
Re: Suche effizienter machen
Bin heute wirklich etwas begriffsstutzig:
Du hast also einen Text in einem RichEdit und willst in diesem Text 3 Worte unter Berücksichtigung der Groß-/Kleinschreiben suchen und, wenn gefunden, fett markieren? |
Re: Suche effizienter machen
taaktaak:
das doch total irrelevant dafür ^^'. Ich lade den kompletten inhalt in FSelect rein, bzw auch in mein Richedit, dort möchte ich egal wegen groß/kleinschreibung, die wörter markieren. Dann gibt es noch eine Suche, die dann den kompletten text klein ausgibt, wenn ich das dort über die schleife klein mache. @Tyrael Y. ja, das mein ich ja das die unterschiede nur im zentelbereich sind und mir eh nichts groß bringen. Nur versteh nicht, was ich machen kann... |
Re: Suche effizienter machen
Ich denke nicht, ,dass das Verständnis deines Code irrelevant ist ;)
Also du hast einen Text? Und den lädst du in eine Stringliste und ein Richedit? Und dann hast du 3 Wörter (können das noch mehr werden?) die du hervorheben möchtest?? |
Re: Suche effizienter machen
Ich halte eine exakte Aufgabendefinition keineswegs für irrelevant, es ist vielmehr eine unabdingbare Voraussetzung, dich bei der Problemlösung unterstützen zu können. Aus dem Codeschnipsel und dem bisher geschriebenen gehen die eigentlichen Anforderungen nicht zweifelsfrei hervor.
Aber vielleicht sind andere Forumsmitglieder ja intuitiver. Ich geb's auf... :roll: |
Re: Suche effizienter machen
ja, aber die suche hat ja primär nichts mit dem textmakieren zutun.
also: -datei öffnen -text in Stringlist laden und Richedit -in Prozedur Text markieren gehen -suchwörter aus ini datei laden (zur zeit höchstens 3 wörter, vllt später mal mehr dynamisch aber erst mal soll das reichen) -suche + markieren starten wie schon quelltext hier geschrieben -ende fürs öffnen |
Re: Suche effizienter machen
Gut, ich skizziere mal, wie ich das machen würde:
Text aus Datei in StringList & Richedit laden: Hast du offenbar schon. StringList mit Wörtern laden.
Delphi-Quellcode:
Der Cde geht also nicht den Text durch, um zu ürüfen, ob da wörter sind, sondern geht die wörter durch und prüft ob sie im Text sind.
uses strutils;
var i, position: integer; Wörter: TStringlist; text: String; Richedit.Lines.Beginupdate(); for i = 0 to Wörter.Count do begin position = pos(Wörter[i], text); while(position != 0) begin // Highlighting mit positioin und length(wörter[i]) position = posex(Wörter[i], text, position); end; end; Richedit.Lines.EndUpdate(); Wg. Case-Sensitiveness: da gibt es evtl. noch andere pos-Funktionen, bei denen man das einstellen kann ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 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 by Thomas Breitkreuz