Если файл очень большой (не разу не встречал больших текстовых файлов) можно поблочно смещать контент файла: прочитал старый блок №1, записал новый блок №1, прочитал старый блок №2, записал новый блок №2 и т.д. (т.к. строка небольшая то размер блока можно взять равным длине строки, тогда новый №2 есть старый №1)
А еще лучше писать в конец.
Могу предположить связь данной темы с другой вами поднятой
http://freepascal.ru/forum/viewtopic.php?t=2167 Вы быстрее получите более полезный ответ если зададите вопрос напрямую.
Если нужно перевернуть файл, то стек, скорее всего, вам поможет. Если нет (в чем сильно сомневаюсь), то чтение файла по блокам (BlockRead) и посимвольное сканирование от конца к началу в поисках переводов строк при встрече очередного перевода строки записывать накопленную строку в выходной файл или передавать соответствующему коду...
Короче каков вопрос, таков ответ. Учитесь задавать вопросы