(Gast)
n/a Beiträge
|
Re: [TStringlist/string] Position => Zeile
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;
|
|
Zitat
|