AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Richedit zeilen durchsuchen

Ein Thema von lucius · begonnen am 8. Okt 2005 · letzter Beitrag vom 1. Mär 2006
Antwort Antwort
lucius

Registriert seit: 6. Okt 2005
Ort: Niederlande
215 Beiträge
 
Delphi 7 Enterprise
 
#1

Richedit zeilen durchsuchen

  Alt 8. Okt 2005, 14:45
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 .
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Richedit zeilen durchsuchen

  Alt 8. Okt 2005, 15:13
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
  Mit Zitat antworten Zitat
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#3

Re: Richedit zeilen durchsuchen

  Alt 8. Okt 2005, 15:30
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Richedit zeilen durchsuchen

  Alt 8. Okt 2005, 15:41
Bitte mal Delphi-Referenz durchsuchenpos in der Hilfe nachschlagen und den Typ des Rückgabewertes angucken.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#5

Re: Richedit zeilen durchsuchen

  Alt 8. Okt 2005, 15:59
Ja, habe ich gemacht
  Mit Zitat antworten Zitat
lucius

Registriert seit: 6. Okt 2005
Ort: Niederlande
215 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Richedit zeilen durchsuchen

  Alt 8. Okt 2005, 17:10
Ich habs.

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]);
  Mit Zitat antworten Zitat
Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#7

Re: Richedit zeilen durchsuchen

  Alt 9. Okt 2005, 03:52
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
Dietmar Brüggendiek
Die 6 Probleme des Programmierers: 1. dauert das länger, als man 2. glaubt, 3. geht das nicht so, wie man sich das 4. schlau überlegt hat, und 5. sitzt der Fehler da, wo man ihn 6. zuletzt sucht
  Mit Zitat antworten Zitat
Benutzerbild von zebrafalke
zebrafalke

Registriert seit: 25. Feb 2006
155 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Richedit zeilen durchsuchen

  Alt 1. Mär 2006, 20:18
wie benutze ich das?



zebrafalke
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Richedit zeilen durchsuchen

  Alt 1. Mär 2006, 21:18
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
  Mit Zitat antworten Zitat
1. Mär 2006, 21:28
Dieses Thema wurde von "Christian Seehase" von "Internet / LAN / ASP.NET" nach "VCL / WinForms / Controls" verschoben.
Falsche Sparte
(besser spät als nie korrigiert )
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:29 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