AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zeile bis zum Ende markieren in einem Text
Thema durchsuchen
Ansicht
Themen-Optionen

Zeile bis zum Ende markieren in einem Text

Ein Thema von TonyR · begonnen am 8. Okt 2007 · letzter Beitrag vom 8. Okt 2007
Antwort Antwort
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#1

Zeile bis zum Ende markieren in einem Text

  Alt 8. Okt 2007, 18:44
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:SelStart:=ErgebnisDerSuchfunktion+Length(Suchstring); 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).

Helfen würde es mir ja schon, wenn ich irgendwie herausbekommen würde in welcher Zeile mein gesuchter String ist!

Danke schonmal im Vorraus!
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Zeile bis zum Ende markieren in einem Text

  Alt 8. Okt 2007, 19:14
Delphi-Quellcode:
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;
Selectiert aber nur, wenn nicht mehr als eine Zeile vorhanden ist.

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:
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;
Ist das Delphi-Beispiel dazu
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
marabu

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

Re: Zeile bis zum Ende markieren in einem Text

  Alt 8. Okt 2007, 19:21
Und noch etwas Code:

Delphi-Quellcode:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Zeile bis zum Ende markieren in einem Text

  Alt 8. Okt 2007, 19:55
Vielen Dank euch beiden!!!
Super Ideen, hilft mir sehr.
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
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 20:12 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