Deutsch
Forum

In Richedit Text suchen

 

Frank
Tretter
Wie kann man in einem Richedit nach einem beliebigen Text suchen.
Hab leider bis jetzt noch nichts hier darüber gelesen.

Benutze WinXP und XProfan 8.

Bin für jede Hilfe dankbar
 
Seit 2008 endlich XProfan 10, ist einfach klasse
30.03.2007  
 




Nico
Madysa
Wie suchst du denn in normalen Edits? Ich würde einfach den Text mit GetText$() auslesen und dann InStr() nehmen.
 
Nico Madysa
30.03.2007  
 




Frank
Abbing
NICO! Asche auf dein Haupt...
Zum Suchen gibt es z.B. die Message EM_FINDTEXT.
 
30.03.2007  
 




Frank
Tretter

KompilierenMarkierenSeparieren
Startsuche& = 0--Ab hier wird gesucht
..
--Das ist die Suchroutine
n$ = Klaus--ist der zu suchende Text
Suchtext$ = GetText$(RichEdit&)--Text aus Richedit
DIM Bereich#,32000
clear Bereich#
String Bereich#,0 = Suchtext$
Gefunden& = MemPos(Bereich#,Startsuche&,n$)
Sendmessage(Richedit&,$00B1,Gefunden&,Gefunden&+Len(n$))Cursor setzen
setfocus(Richedit&)
Dispose Bereich#
Startsuche& = Gefunden&+Len(n$)--An dieser stelle soll dann weiter gesucht werden

Leider funktioniert das nicht so richtig. Wenn leere Zeilen oder Returns im Text sind, dann setzt er den Cursor nicht richtig auf die gefundene Stelle.
Auch das weitersuchen geht dann nicht mehr.
Gibts noch andere Optionen ?
 
Seit 2008 endlich XProfan 10, ist einfach klasse
30.03.2007  
 



[tb]minimalbeispiel[/tb]
 
30.03.2007  
 




Frank
Tretter
Sorry, kenn mich noch nicht so aus. Hier der Code
KompilierenMarkierenSeparieren
Declare FileName$,RichEdit&,Ende&,Suchen&,Beenden&
Declare n$,Bereich#,Gefunden&,Startsuche&,Suchtext$
Startsuche& = 0
Ende&       = 0
*******************************************************************************************************************
cls
Suchen&   = Control(Button,Suchen,$40000000+$10000000+$10000,420,10,200,22,%hwnd,20000,%HINSTANCE)
Beenden&  = Control(Button,Ende,$40000000+$10000000+$10000,420,40,200,22,%hwnd,20001,%HINSTANCE)
RichEdit& = Create(RichEdit,%hwnd,,0,5,400,300)
RTF laden
FileName$ = LoadFile$(Als RTF öffnen,*.RTF)
RTF(LoadRTF,Richedit&,Filename$)
setfocus(Richedit&)
Tastatur und Maus abfragen

WhileNot Ende&

    Case Getfocus(Beenden&) : Ende& = 1

    If Getfocus(Suchen&)

        n$        = Klaus--Dieser Text soll gesucht werden(Nur zum Beispiel)
        Suchtext$ = GetText$(RichEdit&)--Text aus Richedit
        DIM Bereich#,32000
        clear Bereich#
        String Bereich#,0 = Suchtext$
        Gefunden& = MemPos(Bereich#,Startsuche&,n$)
        Startsuche& = Gefunden&+Len(n$)
        Sendmessage(Richedit&,$00B1,Gefunden&,Gefunden&+Len(n$))--Cursor setzen
        setfocus(Richedit&)
        Dispose Bereich#--Hatt ich vergessen

    EndIf

ENDWHILE


Ich möchte in großen Texten nach Wörtern suchen. kann ja sein daß das gesuchte Wort mehrmals vorkommt, deshalb soll man so lange suchen bis man die richtige Stelle gefunden hat.
 
Seit 2008 endlich XProfan 10, ist einfach klasse
30.03.2007  
 




Frank
Abbing
Das ist nicht sonderlich schwer:
KompilierenMarkierenSeparieren
Declare x&

If Getfocus(Suchen&)

    n$=Klaus--Dieser Text soll gesucht werden(Nur zum Beispiel)
    DIM Bereich#,16
    clear Bereich#
    x&=-1

    While 1

        Long bereich#,0=x&+1
        Long bereich#,4=-1
        Long bereich#,8=Addr(n$)
        x&=Sendmessage(Richedit&,$0438,1,bereich#)--EM_FINDTEXT (1=Flagparameter)
        Case x&=-1:BREAK
        Sendmessage(Richedit&,$00B1,x&,x&+Len(n$))--Cursor setzen
        SetFocus(Richedit&)
        Sleep 500

    EndWhile

    SetFocus(Richedit&)
    Dispose Bereich#--Hatt ich vergessen

EndIf


Bei den Flagparametern kannst du noch bestimmen, ob der Suchbegriffe exakt so stimmen muss (Klein/Grossbuchstaben), ob der Suchbegriff ein vollständiges Wort im Text sein muss, usw.
 
30.03.2007  
 




Frank
Tretter
Vielen Dank, genau das was ich gesucht habe.
Hast mir sehr weitergeholfen, jetzt kann ich an meinem Editor weiterbasteln.

Nochmals Danke an alle, gruß Fränki
 
Seit 2008 endlich XProfan 10, ist einfach klasse
30.03.2007  
 




Nico
Madysa

NICO! Asche auf dein Haupt...
Zum Suchen gibt es z.B. die Message EM_FINDTEXT.


Mag durchaus sein, ich würde trotzdem so suchen, da ich die Message jetzt erst kennen gelernt habe.
 
Nico Madysa
02.04.2007  
 




Frank
Abbing
Spricht nichts dagegen. Jedoch ist diese Methode nicht bei grossen Dateien anzuraten, weil irgendwann der Speicher knapp wird. Dann sind zwei Kopien zeitgleich nicht ratsam.
 
02.04.2007  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.169 Betrachtungen

Unbenanntvor 0 min.
Rockford01.08.2024
RudiB.10.09.2022
Michael Hettner05.08.2020
Peter Max Müller13.11.2017
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie