![]() |
Zeile bis zum Ende markieren in einem Text
Hallo an Alle,
Folgendes Problem: Ich möchte in einem sehr langen Text einen String suchen, im Anschluss daran möchte ich in meinem RichEdit vom ENDE des gesuchten Strings an bis zum ZEILENENDE alles markieren. So hier (gesucht wurde "Das ist "; das Fette blaue ist markiert): Das ist jetz mal der Text. Suchen kann ich mit der TRichEdit-Funktion "FindText", damit bekomme ich auch den Wert zurück, den ich für den Anfang des Strings nehmen kann:
Delphi-Quellcode:
Wie bekomme ich es jetzt aber hin, dass das Ende der Markierung (SelLength) am Zeilenende liegt, also wo bekomme ich den Wert her (ich weis ja schließlich nicht, wie lang die Zeile hinter meinem Suchstring noch ist).
SelStart:=ErgebnisDerSuchfunktion+Length(Suchstring);
Helfen würde es mir ja schon, wenn ich irgendwie herausbekommen würde in welcher Zeile mein gesuchter String ist! Danke schonmal im Vorraus! |
Re: Zeile bis zum Ende markieren in einem Text
Delphi-Quellcode:
Selectiert aber nur, wenn nicht mehr als eine Zeile vorhanden ist.
procedure TForm1.Button1Click(Sender: TObject);
var begriff: string; i: integer; begin begriff:= 'Das ist'; for i:= 0 to RichEdit1.Lines.Count -1 do SelString(begriff, RichEdit1.Lines[i], RichEdit1); //Procedure, welche die Zeile markiert end; procedure TForm1.SelString(subs, s: string; aRichEdit: TRichEdit); var start, laenge: integer; begin aRichEdit.SetFocus; start:= pos(subs, s)+ length(subs); aRichEdit.SelStart:= start; laenge:= length(s)- start; aRichEdit.SelLength:= laenge; end; Hab nun aber keine Lust, das noch weiter zu probieren, kommen gleich paar Leute :) Kansnt ja selber das verbessern. Btw. wenn du mal in der Hilfe nachschaust (F1):
Delphi-Quellcode:
Ist das Delphi-Beispiel dazu
procedure TForm1.Button1Click(Sender: TObject);
begin FindDialog1.Position := Point(RichEdit1.Left + RichEdit1.Width, RichEdit1.Top); FindDialog1.Execute; end; procedure TForm1.FindDialog1Find(Sender: TObject); var FoundAt: LongInt; StartPos, ToEnd: Integer; begin with RichEdit1 do begin { Suche hinter aktueller Markierung beginnen (falls vorhanden), } { andernfalls am Textanfang starten. } if SelLength <> 0 then StartPos := SelStart + SelLength else StartPos := 0; { ToEnd ist die Länge von StartPos bis zum Textende im RTF-Eingabefeld } ToEnd := Length(Text) - StartPos; FoundAt := FindText(FindDialog1.FindText, StartPos, ToEnd, [stMatchCase]); if FoundAt <> -1 then begin SetFocus; SelStart := FoundAt; SelLength := Length(FindDialog1.FindText); end; end; end; |
Re: Zeile bis zum Ende markieren in einem Text
Und noch etwas Code:
Delphi-Quellcode:
Grüße vom marabu
begin
with RichEdit do begin SelStart := FindText(searchText, 0, MaxInt, []); if SelStart >= 0 then begin SelStart := SelStart + Length(searchText); SelLength := Length(Lines[CaretPos.Y]) - CaretPos.X; end; end; end; |
Re: Zeile bis zum Ende markieren in einem Text
Vielen Dank euch beiden!!!
Super Ideen, hilft mir sehr. :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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-2025 by Thomas Breitkreuz