Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Wortsuche in einer RichEdit?!


cyclone - So 18.08.02 16:04
Titel: Wortsuche in einer RichEdit?!
Ich möchte in meiner RichEdit einige Schlüsselworter unterbringen die dann anders fomatiert dargestellt werden...

Im moment mach ich das sehr umständlich und ich finde so nur das erste schlüsselwort:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
text: string;
i: integer;
begin
text := RichEdit1.Lines.Text;
i := pos('hallo', text); //sucht im text nach dem wort hallo und übermittelt die position
RichEdit1.SelStart := i;
RichEdit1.SelLength := 5;
RichEdit1.SelAttributes.Color := clBlue;
end;


Mein Problem ist, dass diese methode extrem umständlich ist und ich nie mehr als ein wort finde... gibt es eine bessere möglichkeit???

Hoffe auf antworten ;)


DeCodeGuru - So 18.08.02 19:22

Versuchs mal mit FindText.

Zitat:
type
TSearchType = (stWholeWord, stMatchCase);

TSearchTypes = set of TSearchType;

function FindText(const SearchStr: string; StartPos, Length: Integer; Options: TSearchTypes): Integer;


Damit kannste ab einer bestimmten Position suchen. Wenn das Wort gefunden wurde, übergibt die Funktion die Anfangsposition des gefunden Wortes. Wenn du jetzt alle Wörter herausfinden willst, musst du halt nur die Startpos auf die zu letzt gefundene Position +1 stellen.

Allerdings ist dieses Verfahren relativ umständlich und dauert. Ich würde dir daher die Komponente SynEdit empfehlen.


MathiasH - So 18.08.02 20:41

kann man in Richedit eigentlich was formatiern, ohne den text kurzzeitig markieren zu müssen?, oder führt kein weg an SelStart... vorbei?

MathiasH


cyclone - So 18.08.02 21:38

THX...

@MathiasH: Hab scon alles ausprobiert und keine andere lösung gefunden!

Wo find ich die komponente synEdit??? Ist die Standartgemäß bei delphi installiert?


DeCodeGuru - So 18.08.02 21:44

Zitat:
Wo find ich die komponente synEdit??? Ist die Standartgemäß bei delphi installiert?


Nein, die Komponente ist nicht standardmäßig installiert. Ich glaube, die bekommt man bei http://www.torry.net .

@MathiasH: Nein, man muss den Text für eine kurze Zeit markieren, damit man ihn formatieren kann. Auf jeden Fall wüstte ich nicht, wie man es anders machen sollte :wink:


Tino - So 18.08.02 22:18

Hier der direkte Link auf die Site von SynEdit:

http://synedit.sourceforge.net/

Gruß
TINO