Совершенно неожиданно для себя получил интересную ошибку. Проходили мы с ученицей типизированные файлы в Паскале. Сам по себе этот тип данных не представляет трудности для понимания во время уроков.
Вот текст программы, которая сломалась во время компиляции:
Признаться, я даже растерялся, увидев ошибку. Погуглил и понял, что надо будет подумать самому. Все найденные примеры были точно такими же, как наша программа.
По итогам все просто: вспоминаем, что данные в типизированном файле занимают «ячейки» строго определенного размера. Теперь внимательно смотрим на описание поля nik. Оно типа string, что означает плавающий размер от 1 до 256 байт. Так что, немного правим код, а именно – задаем ограничение на длину поля nik:
Попытался вспомнить, встречался ли я в мои студенческие годы с такой ошибкой. Кажется, нет. По всей видимости, тогдашние компиляторы, встречая запись типа string, автоматически интерпретировали string[256]. Конечно, получалось накладно в плане хранения типизированных файлов. Но для учебных задач внешней памяти в НГУ в те времена, видимо, было с избытком😊.