![]() |
Richedit zeilen durchsuchen
Hallo ich habe folgenden code der durchsucht ein Richedit nach einen bestimmten text.
Delphi-Quellcode:
jetzt moechte ich das er 4 Zeilen nach oben geht und dan nach einen bestimmten text sucht in der Zeile, dan wieder 1 Zeile nach oben und suchen unsw, bis er nix meht findet.
for i := 0 to Richedit1.Lines.Count - 1 do
begin if Pos('95703">', Richedit1.Lines.Strings[i]) > 0 then begin s := ''; for p := Pos('95703">', Richedit1.Lines.Strings[i]) to Length(Richedit1.Lines.Strings[i]) do if Richedit1.Lines.Strings[i][p] <> '<' then s := s + Richedit1.Lines.Strings[i][p] else break; Memo2.Lines.Add(s); Memo2.Text := StringReplace(Memo2.Text, '95703">', '', [rfReplaceAll, rfIgnoreCase]); hat einer ne Ahnung wie ich das hinkriege? Habe schon vieles probiert aber klapt nicht so wie ich das gerne moechte, bin noch neu in Delphi. Sorry sehe gerade das ich in Internet / LAN / ASP.NET sitzt aber das Program hat was mit nem Inet zu tun . |
Re: Richedit zeilen durchsuchen
Hallo lucius,
herzlich willkommen in der Delphi-PRAXiS. Wusstest du, dass das RichEdit control dir einige hilfreiche Methoden zur Lösung deines Problems zur Verfügung stellt?
Delphi-Quellcode:
Allerdings glaube ich aufgrund verschiedener Indizien, dass du eine XML Datei durchsuchst. Wenn die Datei nicht gleichzeitig interaktiv bearbeitet werden soll, dann würde ich eher einen XML Parser für das Suchen und Ersetzen verwenden.
procedure TDemoForm.FindButtonClick(Sender: TObject);
var iLine, iFound, iStart: integer; begin with RichEdit do begin // character offset der Fundstelle iFound := FindText(FindEdit.Text, 0, GetTextLen, []); // line index der Fundstelle iLine := Perform(EM_LINEFROMCHAR, iFound, 0); // character offset der Zeile mit der Fundstelle iStart := Perform(EM_LINEINDEX, i, 0); end; Grüße vom marabu |
Re: Richedit zeilen durchsuchen
Geht nicht auch:
Delphi-Quellcode:
Ich bin mir nicht 100%ig sicher, aber bei editfeldern geht es, also von daher würde ich das nehmen. Der Code ist nicht getestet. Hoffe, ich habe mich nicht verschrieben. ;)
if pos(richedit1.text,'der durchsuchte text') then
begin //Was dann passieren soll end; |
Re: Richedit zeilen durchsuchen
Bitte mal
![]() |
Re: Richedit zeilen durchsuchen
Ja, habe ich gemacht :-D
|
Re: Richedit zeilen durchsuchen
Ich habs.
Delphi-Quellcode:
Aber jetzt findet er den Text in der Zeile nicht mehr, bitte um hilfe.
richedit1.selstart := i - 3;
Delphi-Quellcode:
for b := richedit1.selstart to Richedit1.selstart + 1 do
begin if Pos('sectionid', Richedit1.Lines.Strings[b]) > 0 then begin s := ''; for p := Pos('sectionid', Richedit1.Lines.Strings[b]) to Length(Richedit1.Lines.Strings[b]) do if Richedit1.Lines.Strings[b][p] <> '<' then s := s + Richedit1.Lines.Strings[b][p] else break; Memo1.Lines.Add(s); Memo1.Text := StringReplace(Memo1.Text, 'sectionid', '', [rfReplaceAll, rfIgnoreCase]); |
Re: Richedit zeilen durchsuchen
Hallo lucius!
Mal ein Vorschlag: Wie wäre es mit "TRichEdit.FindText"? Da kann man einstellen, ob Groß/Kleinschreibung berücksichtigt werden soll, man kann nach ganzen Wörtern suchen, Anfang sowie Länge des Suchbereichs vorgeben und vor Allem: Das arbeitet unabhängig von Formatierungen! Gruß Dietmar Brüggendiek |
Re: Richedit zeilen durchsuchen
wie benutze ich das? :gruebel:
zebrafalke |
Re: Richedit zeilen durchsuchen
Hast du meinen Beitrag #2 in diesem thread schon gelesen?
Grüße vom marabu Edit: Bin gerade von Waldteufel auf folgenden Schreibfehler aufmerksam gemacht worden:
Delphi-Quellcode:
// character offset der Zeile mit der Fundstelle
iStart := Perform(EM_LINEINDEX, iLine, 0); // muss iLine heißen, nicht i |
DP-Maintenance
Dieses Thema wurde von "Christian Seehase" von "Internet / LAN / ASP.NET" nach "VCL / WinForms / Controls" verschoben.
Falsche Sparte (besser spät als nie korrigiert ;-)) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 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