Я добавлю к
Александр .
В отличие от Си, где условие цикла каждый раз вычисляется полностью, в Паскале вторая граница for вычисляется один раз и запоминается.
Потому длина строки меняется, а мы ходим до самой первой.
К тому же вы неправильно решаете задачу. Никакой там не одной строкой. В ответе сервера концы строк LF, а надо CR+LF. Вот функция (крайне неоптимизированная), которая приводит концы строк к единому виду независимо от того, какие там стоят.
function NormalizeEol(const s : string) : string;
begin
Result := StringReplace(s, #13#10, #10, [rfReplaceAll]);
Result := StringReplace(Result, #13, #10, [rfReplaceAll]);
Result := StringReplace(Result, #10, #13#10, [rfReplaceAll]);
end;