Типизированный файл не может содержать элементы такого типа

Совершенно неожиданно для себя получил интересную ошибку. Проходили мы с ученицей типизированные файлы в Паскале. Сам по себе этот тип данных не представляет трудности для понимания во время уроков.

Вот текст программы, которая сломалась во время компиляции:

Листинг 1. Пример программы с использованием типизированного файла (с ошибкой)

Признаться, я даже растерялся, увидев ошибку. Погуглил и понял, что надо будет подумать самому. Все найденные примеры были точно такими же, как наша программа.

По итогам все просто: вспоминаем, что данные в типизированном файле занимают «ячейки» строго определенного размера. Теперь внимательно смотрим на описание поля nik. Оно типа string, что означает плавающий размер от 1 до 256 байт. Так что, немного правим код, а именно – задаем ограничение на длину поля nik:

Листинг 2. Программа листинга 1 поправленная

Попытался вспомнить, встречался ли я в мои студенческие годы с такой ошибкой. Кажется, нет. По всей видимости, тогдашние компиляторы, встречая запись типа string, автоматически интерпретировали string[256].  Конечно, получалось накладно в плане хранения типизированных файлов. Но для учебных задач внешней памяти в НГУ в те времена, видимо, было с избытком😊.

Оставьте свой комментарий

три × 1 =

Navigate