Gut, in diesem Fall ist eine while-Schleife wahrscheinlich zielführender. Das könntest Du dann so schreiben:
Delphi-Quellcode:
i := 0;
while (i < RichEdit.Lines.Count) and (AndereBedingung) do
begin
//irgendwas mit der aktuellen Richedit-Zeile machen
inc(i);
end;
Und der Fehler rührt daher, dass TStrings 0-basierend ist, d.h. die erste Zeile hat den Index 0, die letzte Zeile demzufolge Count - 1. Ein Zugriff auf Lines[Count] greift deshalb unweigerlich in einen unzulässigen Bereich.