![]() |
[TSynEditSearch] mehrzeilige Suche findet nichts
Moin moin,
ich versuche gerade in meinen Editor, der auf SynEdit basiert, eine mehrzeilige Suche einzubauen. Leider scheitere ich völlig. Ich verwende als SearchEngine von SynEdit TSynEditSearch und übergebe dann der Funktion SearchReplace von SynEdit einen Suchstring und einen Haufen Parameter. Solange der Suchstring nur eine Zeile hat, klappt das super, aber kaum ist ein Zeilenumbruch enthalten, klappt nichts mehr: Es wird einfach nichts gefunden. Hat da vielleicht jemand eine Idee, woran das liegen könnte? Gruß Malte |
Re: [TSynEditSearch] mehrzeilige Suche findet nichts
Zitat:
Sollen nur alle Worte des Suchstrings im Text enthalten sein, oder eine korrekte Übereinstimmung gefunden werden? |
Re: [TSynEditSearch] mehrzeilige Suche findet nichts
Es geht um die Suchfunktion in einem ganz normalen Texteditor. Von daher soll eine korrekte Übereinstimmung des ganzen Ausdruckes gefunden werden und je nach dem, was der User eingibt, soll dieser Ausdruck eben auch einen oder mehrere Zeilenumbrüche enthalten. Dies ist zum Beispiel sinnvoll, wenn man Wörter am Ende einer Zeile durch andere ersetzen will. (Natürlich ginge das auch mit REs...)
Hast Du eine Idee, warum TSynEditSearch sich nicht wie von mir erwartet verhält? Gruß Malte |
Re: [TSynEditSearch] mehrzeilige Suche findet nichts
Hallo Malte,
wie kommt der Zeilenumbruch überhaupt zustande, mit der ENTER Taste oder ...? |
Re: [TSynEditSearch] mehrzeilige Suche findet nichts
Hallo uwewo,
genau. Ich habe allerdings schon mal ein wenig experimentiert und den Zeilenumbruch gegen andere Zeichen ersetzt in der Hoffnung, dass TSynEditSearch nicht #13#10, sondern nur #10 oder nur #13 als Zeilenumbruch erwartet... Gruß Malte |
Re: [TSynEditSearch] mehrzeilige Suche findet nichts
Im Word und etc. sowie auch hier im Forum, wird der Zeilenumbruch automatisch gesetzt.
Also prüfe doch deine Zeilen auf die Länge, und füge gebenenfalls eine neue Zeile ein dann sollte es qauch mit dem Suchen funktionieren. |
Re: [TSynEditSearch] mehrzeilige Suche findet nichts
:wiejetzt:
Ich glaube wir reden noch aneinander vorbei. Es geht darum, dass der Benutzer in einem ganz normalen Texteditor, den ich programmiere, nach einem bestimmten Text suchen kann. Dabei kann er eben auch einen Zeilenumbruch mit eingeben und sucht dann z.B. nach folgendem:
Delphi-Quellcode:
In diesem Fall liefert besagte Such-Engine kein Ergebnis, auch wenn der gesuchten String im gerade bearbeiteten Text im Editor vorkommt. Ich verstehe jetzt nicht so ganz, an welcher Stelle ich bei Bedarf eine Zeile ergänzen kann...
'Hallo'#$D#$A'Du'
Gruß Malte |
Re: [TSynEditSearch] mehrzeilige Suche findet nichts
Hast Du in Word das mal versucht, denn dort funktioniert das auch nicht!
Nur wenn kein manueller Zeilenumbruch vorhanden ist, findet er den Suchtext. |
Re: [TSynEditSearch] mehrzeilige Suche findet nichts
Die Word-Suche (Word XP) erlaubt keine mehrzeilige Eingabe eines Suchstrings. Man kann nur eine einzige Zeile eingeben und die Funktion, die ich in meinem Editor einbauen möchte, bietet Word somit gar nicht: Der Vergleich hilft mir also leider auch nicht weiter. Nochmal ein Beispiel:
Text im Editor:
Code:
Suchstring:
aaaa
bbb ccc ddd eee fff ggg
Code:
gewünschtes Suchergebnis:
c
d
Code:
Gruß
aaaa
bbb cc[color=#ff0000]c d[/color]dd eee fff ggg Malte |
Re: [TSynEditSearch] mehrzeilige Suche findet nichts
Wenn ich mich recht entsinne ist das Synedit-Projekt Open Source?
Vielleicht solltest du mal einen Blick in die Lib riskieren? :gruebel: Gruß Stefan |
Re: [TSynEditSearch] mehrzeilige Suche findet nichts
Zitat:
Gruß Malte |
Re: [TSynEditSearch] mehrzeilige Suche findet nichts
Sorry war gestern nicht Online.
Klar biete Word keinen mehrzeiligen Suchtext, aber wenn der gesuchte Text ----------------------------- Hallo ich suche Dich ----------------------------- lautet, und "ich suche" in Word eingibst wird der Text trotzdem gefunden allerdings nur wenn kein manueller Zeilenumbruch vorhanden ist. Wenn Du ein mehrzeiliges Eingabefeld für den Suchtetxt hast, solltest Du vor der Suche zuerst alle Zeilenumbrüche in Deinem Text sowie aus dem Suchfeld entfernen. |
Re: [TSynEditSearch] mehrzeilige Suche findet nichts
Zitat:
SynEdit verwaltet die einzelnen Zeilen in einer Stringlist. Und die SynEdit-Suche sucht demzufolge auch nur Zeichen innerhalb eines Strings (also in Editor.Lines) und nicht String-übergreifend (Editor.Text). Du müsstest Dir also eine eigene Suche basteln, die in Editor.Text das Vorkommen sucht (z.B.: Pos('mein#13#10text', Editor.Text)) und in eine entsprende Carret-Position umsetzt. Musst aber beachten, dass SynEdit verschiedene ZeilenEnde-Marker zulässt. |
Re: [TSynEditSearch] mehrzeilige Suche findet nichts
Zitat:
Was macht denn Deiner Meinung nach mehr Sinn: Eine ganz eigene Suche entwerfen, oder die Suche von SynEdit entsprechend aufpeppen? Hat sich da vielleicht schon mal jemand dran gewagt? Gruß Malte |
Re: [TSynEditSearch] mehrzeilige Suche findet nichts
Moin moin,
Zitat:
Delphi-Quellcode:
Pos('mein#13#10text', Editor.Text)
Delphi-Quellcode:
Pos('mein#10text', Editor.Text)
Delphi-Quellcode:
Bringt einer davon Result > 0 dann hast Du die erste Fundstelle.
Pos('mein#10text', Editor.Text)
Wozu da noch an Synedit rumbiegen ? |
Re: [TSynEditSearch] mehrzeilige Suche findet nichts
Nur mir Pos suchen ist ja eher eine Schmalspursuche. Mein Traum von Suche beherrscht ein wenig mehr:
Gruß Malte |
Re: [TSynEditSearch] mehrzeilige Suche findet nichts
Hast du gesehen daß du als SearchEngine des Editors statt eines TSynEditSearch auch ein TSynEditRegExSearch verwenden kannst? Damit läßt sich wahrscheinlich auch dein Zeilenumbruchproblem lösen. Wobei es nicht ratsam wäre, eine Suche immer im RegEx-Modus auszuführen. Das sollte vom Benutzer per Checkbox eingeschaltet werden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 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