Это всё от недопонимания.
Количество строк функция TFCount возвращает неверно, а именно если последняя строка пустая, то она не считается, то есть в обычном пустом файле с нуля символами TFCount=0, а сразу как только добавляешь первый символ TFCount=1. Но этот недостаток с успехом компенсируется логикой функции TFWrite, которая хоть и добавляет в конец без спроса одну пустую строку (при отсутствии таковой)...
Всё работает правильно, никаких мнимых 'недостатков' нет. Почитай что такое управляющие символы...
Пока в строке нет ни одного символа и строки нет, а как иначе?
Вот сколько здесь строк?
абракадабра\nвторая строка (подсказка)\n
ну хочешь так напишу
абракадабра\n
вторая строка (подсказка)\n
Здесь две строки. Если записать любой программой в файл, там тоже будет 2. И кликер покажет две.
А открой в редакторе... тоже две, но! в конце каждой строки есть управляющий символ \n - перевод строки.
Второй \n всё ещё во второй строке, хоть курсор уже стоит ниже, там где будет 3 строка. Но третьей ещё нет, пока там нет ни одного символа хоть отображаемого, хоть неотображаемого.
Всё скрыто за абстракциями. добавление строки автоматом добавляет в конце перенос строки, чтоб ты сам не следил за этим. А вот если бы следил, таких рассуждений небыло. Медвежья услуга для понимания в языках начального уровня.
2.А как должно быть? Общий стандарт или правило, память заполняется от начала к концу от меньших адресов к большим. Соответственно в структуре размер которой ты не знаешь изначально (у нас же динамические массивы) дописываются новые элементы в конце.
push pop команды для работы поипринципу стека: последний вошел, первый вышел.
В языках конечно бывают и массивы с методами работы по принципу очереди: первый вошел - первый вышел. И смешанные типы. И т.д. и т.п. У нас пока только такой.
Всё упирается в оптимизацию скорости и памяти. Этот самый простой.
3. no comment
4.не интерпритатор самодур, а код неправильный. Не в написании, а логика неправильна.
Ты открываешь шкаф, на тебя выпадает крайняя футболка, ты пишешь на ней номер '1' запихиваешь назад с краю и закрываешь.
Открываешь опять и падает та же футболка. Ты перед 1 дописываешь 2 и запихиваешь назад и так много раз.
Вопрос, по окончании, ты пронумеровал все вещи в шкафу?