Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Richedit suche nach oben (https://www.delphipraxis.net/76796-richedit-suche-nach-oben.html)

XzenTorXz 10. Sep 2006 02:28


Richedit suche nach oben
 
Hallo,
Ich möchte in meinem Richedit mit SendMessage einen Text nach oben (von der aktuellen position) suchen.
http://msdn.microsoft.com/library/de...m_findtext.asp
da steht das man FR_DOWN benutzt um nach unten zu suchen, an sonsten nach oben.
aber:
Zitat:

[Error] Editor.pas(446): Undeclared identifier: 'FR_DOWN'
und ich habe festgestellt, dass es automatisch nach unten sucht. Also geh ich davon aus das ich RichEdit1 habe.
Doch leider steht in der msdn nicht wie ich da nach oben suchen kann. (FR_UP hab ich auch probiert ist aber auch nicht deklariert)

Kann mir jemand helfen ?

marabu 10. Sep 2006 11:08

Re: Richedit suche nach oben
 
Hallo,

tatsächlich ist es so wie du vermutest - Borland kapselt RICHED32.DLL und das ist das Rich Edit Control 1.0. Eine Rückwärtssuche kannst du implementieren, indem du zuerst alle Fundstellen ermittelst und in einem Offset-Array zwischenspeicherst. Anschließend kannst du durch Manipulation des Array-Index zur vorigen oder zur nächsten Fundstelle springen. Vielleicht hilft dir die Routine FindAll() bei der Implementierung deiner Suchfunktion.

Grüße vom marabu

XzenTorXz 10. Sep 2006 13:05

Re: Richedit suche nach oben
 
hmm ich benutze das fürs syntaxhighlighting und ich glaube da würde das etwas zu lange dauern.

Wie kann ich es auf Richedit 2 oder 3 updaten? Laut C++ hab ich mindestens die v.2 auf dem rechner.

Gruß XzenTorXz

marabu 10. Sep 2006 15:17

Re: Richedit suche nach oben
 
Hi,

Zitat:

Zitat von XzenTorXz
hmm ich benutze das fürs syntaxhighlighting und ich glaube da würde das etwas zu lange dauern.

gut, dass du noch schreibst wofür du das benötigst. Beim SyntaxHighlighting gehst du doch von einem character string aus, der von einem parser in token zerlegt wird. Entweder du analysierst den Text immer wieder von Anfang bis mindestens zum Ende des sichtbaren Bereichs oder du baust einen Syntaxbaum und sparst dir das ständige parsen. Rückwärtssuche brauchst du da eigentlich keine.

Oder du schreibst von SyntaxHighlighting und meinst das Einfärben spezieller Schlüsselworte ohne Berücksichtigung des Kontexts. Würdest du dann nicht besser mit der Nachricht EM_FINDWORDBREAK arbeiten? Die funktioniert vorwärts und rückwärts, wenn ich mich recht besinne.

Zum Thema Update: Du kannst eine eigene Unit schreiben, welche die aktuelle Version 4.1 des Rich Edit Control für Delphi kapselt. Oder du greifst auf eine kommerzielle Implementierung zurück. Hinweise auf mögliche Kandidaten solltest du hier im Forum finden.

Viel Erfolg

marabu

XzenTorXz 10. Sep 2006 16:43

Re: Richedit suche nach oben
 
Danke für die Antwort.

Das Problem ist ich möchte auch Strings die zwischen '' stehen markieren. und wenn jetzt, das letzte ' gelöscht wird muss ich das erste finden damit ich es von da wieder einfärben kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 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