TRegEx.Matches
Dem kann man alles reingeben oder auch nacheinander einzelne Zeilen.
Über die Optionen kann man auch sagen wie Zeilenumbrüche interpretiert werden, alles als "eine" Zeile oder nicht. (siehe Modifier/Options)
Was dort an Ergebnisdaten in der Collection drin ist, das kannst dir im Debugger ansehn, oder siehe die Match-Infos im Regex-Tester.
In der Collection steht zu jedem Ergebnis auch die Position, welche man sich selbst in die Zeile umrechnen kann, oder welches man sich von einem TMemo geben lassen kann.
EM_LINEFROMCHAR bzw. TMemo.SelStart->TMemo.CaretPos
am Einfachsten die Zeilenumbrüche vor dem Zeichen zählen.
GefundenInZeile := DieDateiAlsString.substring(0, GefundenerCharIndex).CountChar(#10);
(etwas aktuelleres Delphi)
bzw.
Delphi-Quellcode:
Index := GefundenerCharIndex;
Zeile := -1;
while Index >= 0
do begin
Inc(Zeile);
Dec(
Index, Length(StringList[Zeile] + sLineBreak));
// bzw. der passende Zeilenumbruch
end;
GefundenInZeile := Zeile;