| |
|
|
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. |
|
|
| |
|
|
|
Frank Abbing | NICO! Asche auf dein Haupt... Zum Suchen gibt es z.B. die Message EM_FINDTEXT. |
|
|
| |
|
|
|
Frank Tretter | KompilierenMarkierenSeparieren 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 ▲ |
|
|
|
|
| |
|
| |
|
|
|
Frank Tretter | Sorry, kenn mich noch nicht so aus. Hier der Code KompilierenMarkierenSeparierenDeclare 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: KompilierenMarkierenSeparierenDeclare 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. |
|
|
| |
|
|
|
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. |
|
|
| |
|
|
|
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. |
|
|
| |
|
|