Транслятор не распознает Match

Потому что по точке надо всё стараться вызывать…

Написать:

close(fi);

Вместо:

fi.close;

Вам даёт только ради совместимости с древнепаскальными диалектами.

Но то что в случае файлов даёт - не значит что всё надо пытаться анархично писать.
Кроме всего прочего, когда вы ставите точку после переменной - вам показывает всё что с ней можно делать. Используйте эту возможность.

А он не имеет, потому что я вам уже объяснил - вы объявляете новую переменную DefaultEncoding, вместо того чтобы присвоить существующей, которую используют стандартные подпрограммы когда кодировка не указана.