Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Bei einem Text in RichEdit bestimmte Wörter formatieren (https://www.delphipraxis.net/35811-bei-einem-text-richedit-bestimmte-woerter-formatieren.html)

fkerber 12. Dez 2004 12:36

Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
 
Hi!

Dann schau mal, was Pos für Paramter erwartet --> F1


Ciao Frederic

Äfan 12. Dez 2004 12:54

Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
 
Zitat:

RichEdit1.SelStart:=pos('Scheisse');
Also ich habe herausgefunden das da nach 'Scheisse' noch was reingehört, aber ich weiß net was !? In der Delphi Hilfe steht S und S=' 125.5' Aber ich versteh nicht was das soll und was ich da reinschreiben soll.

RichEdit1.SelStart:=pos('Scheisse',NochIrgendWas);

PS: Das mit der Endlosschleife is tatsächlich, dass programm wurde paar mal komplett blockiert. und die attribute werden auch nicht gesetzt.

fkerber 12. Dez 2004 12:58

Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
 
Hi!

Da steht doch alles deutlich:

Zitat:

Returns the index value of the first character in a specified substring that occurs in a given string.

Unit

System

Category

string handling routines

Delphi syntax:

function Pos(Substr: string; S: string): Integer;

Description

In Delphi, Pos searches for a substring, Substr, in a string, S. Substr and S are string-type expressions.

Pos searches for Substr within S and returns an integer value that is the index of the first character of Substr within S. Pos is case-sensitive. If Substr is not found, Pos returns zero.

The PosEx function is similar to Pos, but provides additional features and can be used in C++ code.

Delphi-Quellcode:
if Pos(gesuchtes_wort,text) > 0 then
und dann das von oben

Ciao Frederic

Dani 12. Dez 2004 12:59

Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
 
Überleg doch mal... woher soll pos() wissen, in welchem Text nach "scheisse" gesucht werden soll :zwinker:

Induktiver Ansatz:
Pos('Welt', 'Hallo, Welt!') liefert 8.

Äfan 12. Dez 2004 13:07

Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
 
Gut das weiß ich inzwischen auch. Also das prog läuft, nur wenn ich auf denn button klicke hängt sich das prog auf. Hier mal der Code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 while pos('Scheisse',RichEdit1.Text) > 0 do begin
  RichEdit1.SelStart:=pos('Scheisse',RichEdit1.Text);
  RichEdit1.SelLength:=8;
  RichEdit1.SelAttributes.Color := clBlue;
  RichEdit1.SelAttributes.Style := [fsBold, fsItalic];
  end;
end;

nailor 12. Dez 2004 13:09

Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
 
weil das ne endlosschleife gibt, weil der das erste Scheisse immer wieder findet. Wenn ersetzt wurde erst weiter hinten wieder anfangen.

fkerber 12. Dez 2004 13:09

Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
 
Hi!

Es wurde doch schon geschrieben, dass es mit while schief geht. Deswegen musst du es z.B. mit if machen (siehe meinen Post von oben)


Ciao Frederic

glkgereon 12. Dez 2004 13:11

Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
 
mann ich bin heut müde....also, nächster versuch:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var temp: integer;
begin
while PosEx('Scheisse',RichEdit1.Text,temp) > 0 do begin
  RichEdit1.SelStart:=pos('Scheisse',RichEdit1.Text);
  RichEdit1.SelLength:=8;
  RichEdit1.SelAttributes.Color := clBlue;
  RichEdit1.SelAttributes.Style := [fsBold, fsItalic];
  temp:=RichEdit1.SelStart;
  end;
end;
oder?

Äfan 12. Dez 2004 13:20

Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
 
PosEx ist Undefinierter Bezeichner.

Also ich habe es jetzt so gemacht:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 if pos('Scheisse',RichEdit1.Text) > 0 then
  RichEdit1.SelStart:=pos('Scheisse',RichEdit1.Text);
  RichEdit1.SelLength:=8;
  RichEdit1.SelAttributes.Color := clBlue;
  RichEdit1.SelAttributes.Style := [fsBold];
end;
Nur etwas blöd ist, das nicht Scheisse komplett blau wird sondern Scheisse und immer nur das erste Scheisse blau gemacht wird, die anderen werden ignoriert.

fkerber 12. Dez 2004 13:22

Re: Bei einem Text in RichEdit bestimmte Wörter formatieren
 
Hi!

Ja, das mit mehr als einmal geht nur PosEx. Und wenn du mal in der OH gesucht hättest, dann hättest du gesehen, dass in der Unit StrUtils deklariert ist.

Er macht doch das Wort ganz blau. Was gefällt dir da nicht.


Ciao Frederic


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz