Forse l'errore si trova proprio nella parte di codice che hai omesso con ripetuto per le righe da leggere.
Tuttavia, ti consiglio di seguire un approccio diverso per la lettura delle stringhe. Usa la classe TStringList: questa classe è in grado di caricare e mantenere in memoria una lista di stringhe, aggiunte una ad una tramite codice usando un apposito metodo, oppure caricandole da un file. Prendi come esempio la porzione di codice riportata qui sotto:
codice:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: TStringList;
begin
  s := TStringList.Create;
  try
    s.LoadFromFile('nomefile.txt');
    // ---> qui il codice di elaborazione delle stringhe caricate <---
  finally
    s.Free;
  end;
end;
In questo blocco di codice, viene creata un'istanza della classe TStringList. Attraverso il metodo LoadFromFile, carichiamo al suo interno il contenuto del file specificato come parametro. A questo punto, possiamo scandire tutte le linee di testo utilizzando la proprietà Items, oppure farci restituire tutto il contenuto del file in un'intera stringa tramite la proprietà Text. Consulta la Guida in linea di Delphi per maggiori informazioni sulle potenzialità della classe TStringList. Il costrutto try...finally garantisce la distruzione dell'oggetto (e il conseguente rilascio della memoria occupata) dopo l'uso, anche nel caso in cui si verifichi un errore.

A mio parere, questo è il metodo più pulito e congeniale per caricare e elaborare file di testo in Delphi.

Ciao!