Типизированные и нетипизированные файлы в языке Турбо Паскаль. Стандартные средства обработки файлов. Примеры.
Турбо Паскаль поддерживает три файловых типа: – типизированные файлы (задаются предложением File of...); – текстовые файлы (определяются типом Text); – нетипизированные файлы (определяются типом File). Типизированные файлы состоят из машинных представлений чисел, символов и структур, из них построенных. Они хранят данные в том же виде, что и память ЭВМ. Посредством типизированных файлов можно осуществлять обмен данными только между дисками и рабочей памятью программы, но нельзя, например, напрямую вывести данные на экран. Нетипизированные файлы также состоят из машинных представлений данных. Отличие их от типизированных файлов в том, что последние имеют дело только с данными заранее объявленного типа, а нетипизированные – с произвольными наборами байтов, независимо от их структуры и природы. Нетипизированные файлы – это низкоуровневый канал ввода–вывода для доступа к любым файлам с любым типом. Типизированный, или компонентный, файл – это файл с объявленым типом его компонентов, т.е. файл с наборами данных одной и той же структуры. Объявление такого файлового типа имеет вид Type f: File Of <Тип>. Компонент может иметь любой ординарный или структурированный тип, предопределенный или построенный программистом. Запрещено лишь объявлять файлы файлов и файлы объектов, а также файлы структурированных компонентов (массивов, записей и др.), содержащих те же файлы или объекты. Допустимы следующие объявления: Type Dim = Array [1..100, 1..2] of Real; Zap = Record x, y: Byte; a: Dim; End; Df = File Of Dim; Zf = File Of Zap; Недопустимыми являются такие типы: Type ff1 = File Of File Of Real; ff2 = File Of Df; FZapF = Record x, y: Byte; f: File Of Char End; Zap = File Of FZapF; При написании программ необязательно определять специальные файловые типы. Можно сразу описывать файловые переменные: Var Fr: File Of Real; Fd: File Of Zap; Длина любого компонента типизированного файла строго постоянна, что дает возможность организовать прямой доступ к каждому из них.
|