Вопрос, собственно, сводится к тому, как работает r.eof.
Например, если мы только-только открыли файл и вызвали Files.Set(r, f, 0), а файл был пустым, будет ли значение r.eof = TRUE или сперва надо вызвать процедуру Files.Read(r, ch), а уж затем смотреть r.eof? Какдолжнобыть?

Заметку о шаблонах цикловмного раз читал и всем показывал, очень хороший и ёмкий материал.Соответствующее обсуждение на форуме— тоже.