![]() |
In Memo suchen und zur zeile springen
Ich nutze folgenden Code um das Memo zu durchsuchen:
Delphi-Quellcode:
Er findet auch das gesuchte, aber nun möchte ich das die Zeile angeziegt und markiert wird in der das gesuchte gefunden wurde.
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; Kann mir bitte jemand sagen wie das geht? Danke. |
Re: In Memo suchen und zur zeile springen
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 |
Re: In Memo suchen und zur zeile springen
Mit
Delphi-Quellcode:
und
TMemo.SelStart
Delphi-Quellcode:
kannst du ein Textstück in einem Memo markieren.
TMemo.SelLength
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; |
Re: In Memo suchen und zur zeile springen
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.
Delphi-Quellcode:
Inc(iLen, Length(Memo4.Lines[i])+2);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:26 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