Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#3

AW: Memo durchsuchen

  Alt 26. Dez 2010, 10:55
Zitat:
for I := 0 to Memo1.Lines.Count do
Du meinst bestimmt -1

Delphi-Quellcode:
var
  I, PosReturn, SkipChars: Integer;
begin
  Skipchars := 0;
  for I := 0 to Memo1.Lines.Count - 1 do
  begin
    PosReturn := Pos(FindDialog1.FindText, Memo1.Lines[I]);
    if PosReturn <> 0 then
    begin
      Memo1.SetFocus;
      Memo1.SelStart := SkipChars + PosReturn - 1;
      Memo1.SelLength := Length(FindDialog1.FindText);
      Break;
    end;
    //Inc(Skipchars, Length(Memo1.Lines[J]) + Length(sLineBreak);
    Inc(Skipchars, Length(Memo1.Lines[J]) + Length(Memo1.Lines.LineBreak);
  end;
Delphi-Quellcode:
var
  PosReturn: Integer;
begin
  PosReturn := Pos(FindDialog1.FindText, Memo1.Text);
  if PosReturn <> 0 then
  begin
    Memo1.SetFocus;
    Memo1.SelStart := PosReturn - 1;
    Memo1.SelLength := Length(FindDialog1.FindText);
  end;
end;
Und bezüglich des Weitersuchens ist es über .Text einfacher, da man sich dort nur eine Startposition merken/besorgen muß.
Nei der zeilenweisen Behandlung muß diese Position ja erstmal in Zeile+Spalte zerlegt werden, oder man merkt sich die Anzahl der vorherrigen Funde und muß dann jesemal komplett neu suchen und beim gewünschten Fund abbrechen.

Delphi-Quellcode:
var
  PosReturn: Integer;
begin
  if SucheVonVorn then
    PosReturn := Pos(FindDialog1.FindText, Memo1.Text)
  else
    PosReturn := PosEx(FindDialog1.FindText, Memo1.Text,
      Memo1.SelStart + Memo1.SelLength - 1);
  if PosReturn <> 0 then
  begin
    Memo1.SetFocus;
    Memo1.SelStart := PosReturn - 1;
    Memo1.SelLength := Length(FindDialog1.FindText);
  end;
end;
PS: Nicht mehrfach inder Schleife auf Memo1.Text und niemals auf Memo1.Lines.Text zugreifen ... wenn, dann Memo1.Text vorher in eine Stringvariable kopieren und Diese verwenden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (26. Dez 2010 um 10:58 Uhr)
  Mit Zitat antworten Zitat