Wieso nicht einfach so wie ich's geschrieben habe?
Delphi-Quellcode:
procedure SelectLine(LineNo: Integer; SynEdit: TSynEdit);
begin
SynEdit.CaretX := 1;
SynEdit.CaretY := LineNo;
SynEdit.SelLength := Length(SynEdit.LineText);
end;
Deine Schleife ist nicht gerade sehr performant, wie du siehst geht es leicht ohne. Klar, die Abfrage, ob die Zeile bzw. das SynEdit existiert, muss man bei mir noch hinzufügen.