Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#9

Re: [TStringlist/string] Position => Zeile

  Alt 6. Feb 2009, 10:55
Hallo,

versuch' es mal damit:
Delphi-Quellcode:
Function PosToLine(sl : TStrings;
                   sSearchText : String) : Integer;
Var
          iPos : Integer;
          iStart : Integer;
          iEnde : Integer;
          s : String;
begin
  // Position des gesuchten Textes ermitteln.
  iPos := Pos(sSearchText,sl.Text);
  // Von dieser Position rückwärts den vorherigen Zeilenvorschub suchen.
  iStart := iPos;
  Repeat
    Dec(iStart);
  Until sl.Text[iStart] = #10;
  // Wir brauchen die Position hinter dem vorherigen Zeilenvorschub.
  Inc(iStart);
  // Von der Postion der gesuchten Zeichenfolge aus den nächsten Zeilenvorschub suchen.
  iEnde := iPos;
  Repeat
    Inc(iEnde);
  Until sl.Text[iEnde] = #13;
  // Die Zeichenfolge zwischen vorherigem und folgenden Zeilenvorschub holen.
  s := Copy(sl.Text,iStart,iEnde - iStart);
  // Die Zeile mit der Zeichenfolge suchen und den Index zurückgeben.
  Result := sl.IndexOf(s);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(PosToLine(Memo1.Lines,Edit1.Text)));
end;
  Mit Zitat antworten Zitat