AGB  ·  Datenschutz  ·  Impressum  







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

In Memo suchen und zur zeile springen

Ein Thema von BBoy · begonnen am 13. Apr 2007 · letzter Beitrag vom 13. Apr 2007
Antwort Antwort
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#1

In Memo suchen und zur zeile springen

  Alt 13. Apr 2007, 09:57
Ich nutze folgenden Code um das Memo zu durchsuchen:
Delphi-Quellcode:
   for i := 0 to memo4.lines.Count-1 do begin
      if pos('test', memo4.lines[i]) <> 0 then begin
      // hier soll die routine hin wo mir die zeile anzeigt...
         break;
      end;
   end;
Er findet auch das gesuchte, aber nun möchte ich das die Zeile angeziegt und markiert wird in der das gesuchte gefunden wurde.
Kann mir bitte jemand sagen wie das geht? Danke.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: In Memo suchen und zur zeile springen

  Alt 13. Apr 2007, 10:10
Um diese Problem zu lösen kannst Du mit SelStart und SelLength arbeiten.

Dies wirft aber wieder ein kleines Problem auf, das SelStart auf Zeichenbasis arbeitet
und nichts von der Zeilenanordnung des Memos weiß.
Du müßtest also hergehen und die Anzahl der Zeichen der Zeilen die vor der gefundenen Zeile liegen ermitteln.
Pro Zeile mußt Du dann wahrscheinlich noch 2 Zeichen für #13#10 hinzufügen, hängt aber davon ab wie Du zählst.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#3

Re: In Memo suchen und zur zeile springen

  Alt 13. Apr 2007, 10:12
Mit

TMemo.SelStart und

TMemo.SelLength kannst du ein Textstück in einem Memo markieren.

Kleines Beispiel.
QnD!

Delphi-Quellcode:
var
  i, iLen, iPos: Integer;
  s: String;
begin
  iLen := 0;
  s := Edit1.Text;
  for i := 0 to Memo1.Lines.Count-1 do
  begin
    iPos := Pos(s, Memo1.Lines[i]);
    if (iPos <> 0) then
    begin
      Memo1.SelStart := iLen + iPos -1;
      Memo1.SelLength := Length(s);
      Memo1.SetFocus;

      Break;
    end
    else
      Inc(iLen, Length(Memo1.Lines[i]));
  end;
end;
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#4

Re: In Memo suchen und zur zeile springen

  Alt 13. Apr 2007, 10:33
Hey klasse, danke euch beiden.
Beim Code von ste_ett gab es erst probleme, da er nicht die richtige Position gefunden hatte. Aber danke dem Hinweis vom Klaus01, dass man noch 2 zeichen hinzufügen muss, klappt es jetzt prima.

Hier die verbesserte Zeile: also grade +2 angehängt.

Inc(iLen, Length(Memo4.Lines[i])+2);
  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 18:14 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