Delphi-PRAXiS

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 Richedit zeilen durchsuchen (https://www.delphipraxis.net/54633-richedit-zeilen-durchsuchen.html)

lucius 8. Okt 2005 13:45


Richedit zeilen durchsuchen
 
Hallo ich habe folgenden code der durchsucht ein Richedit nach einen bestimmten text.

Delphi-Quellcode:
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]);
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.
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 .

marabu 8. Okt 2005 14:13

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:
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;
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.

Grüße vom marabu

Chrissi91 8. Okt 2005 14:30

Re: Richedit zeilen durchsuchen
 
Geht nicht auch:

Delphi-Quellcode:
if pos(richedit1.text,'der durchsuchte text') then
 begin
  //Was dann passieren soll
 end;
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. ;)

Luckie 8. Okt 2005 14:41

Re: Richedit zeilen durchsuchen
 
Bitte mal Delphi-Referenz durchsuchenpos in der Hilfe nachschlagen und den Typ des Rückgabewertes angucken.

Chrissi91 8. Okt 2005 14:59

Re: Richedit zeilen durchsuchen
 
Ja, habe ich gemacht :-D

lucius 8. Okt 2005 16:10

Re: Richedit zeilen durchsuchen
 
Ich habs.

Delphi-Quellcode:
richedit1.selstart := i - 3;
Aber jetzt findet er den Text in der Zeile nicht mehr, bitte um hilfe.

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]);

Brüggendiek 9. Okt 2005 02:52

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

zebrafalke 1. Mär 2006 19:18

Re: Richedit zeilen durchsuchen
 
wie benutze ich das? :gruebel:



zebrafalke

marabu 1. Mär 2006 20:18

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 1. Mär 2006 20:28

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 21:30 Uhr.

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