Процедуры и функции для работы с файлами

Подпрограммы для работы со всеми типами файлов.Процедуры:

assign(var fp; filename :string) -связывает фай, ловую переменную f р с физическим файлом, имя которого задано в строке filename. Если путь к файлу не задан, предполагается, что он находится в текущем каталоге.rewrite(var fp) -открывает новый файл для записи данных. Если физический файл, с которым связана переменная f р, существовал ранее, он очищается, то есть вся информация из него теряется.reset(var fp)- открывает существующий файл для последующего чтения или записи данных.close(var fp) -закрывает открытый файл. Типизированные файлы Формат типизированного файла: type<имя типа> =flie of <тип компонента>;var <имя файловой переменной>:<имя типа>;Для ввода информации из файла, открытого для чтения, используется оператор:read(<имя файловой переменной>,<список ввода>);При этом происходит считывание данных из файла в перемен­ные, имена которых указаны в списке ввода. Переменные долж­ны быть того же типа, что и компоненты файла. Вывод информации выполняется оператором: write (<Имя файловой переменной>,<список вывода>);Примеры описания файлов:type n =file of integer;{тип-файл целых чисел};с =file of char;{тип- файл символов};massiv=array[1..5]of real;var fl:n; f2:c;z : file of word;f: file of massiv;{файл, компонентами которого являются массивы вещественных чисел}

Текстовые файлы

Для описания текстовых файлов в Паскале имеется стандарт­ный файловый тип text,например: var in_file:text;Доступ к текстовому файлу организуется последовательно, то есть программа не может в любой момент времени считать из него произвольную порцию информации или произвести запись в про­извольное место файла.Для работы с текстовым файлом используются процедуры assign, rewrite, reset, close.Однако текстовый файл, открытый процедурой reset,доступен только для чтения, в отли­чие от типизированных файлов.Для записи в текстовый файл или чтения из него можно ис­пользовать процедуры Write, WriteLn, Readи ReadLn.В этом случае в качестве первого параметра в этих процедурах указы­вается файловая переменная, напримерReadln(in_file, а, х);Здесь происходит присваивание переменным а и хзначений двух очередных элементов из файла, связанного с файловой пере­менной in_f ile. Текстовыйфайл может использоваться для хранения чис­ленных значений. При считывании значений или их записи в файл происходит автоматическое преобразование из числового формата в символьный, и наоборот. Оператор вывода допускает описание формата вывода. Если а является выражением целого, булевого или строкового типа, то оператор WriteLn (in_f ile, a: n); означает запись значения переменной а в правые позиции поля размером в ппозиций.Append(var fp)-Открывает существующий файл, связана ный с файловой переменной f р, для до­бавления в него новых записей; Eoln(var fp)-Возвращает Т rue, если указатель файла достиг маркера конца строки. В противном случае False.;SeekEoln(var fp)-Аналогична предыдущей, но указатель файла пропускает все знаки табуляции, предшествующие маркеру конца строки.




Модули

Для размещения в памяти большой программы может не хватить одного сегмента памяти (его размер - до 64 кбайт). включили в язык механизм так наз модулей, ко­тор размещ в разных сегментах. Модули позволяют соз­д библиотеки проц и функц, кот можн подкл к разн прог.Модуль - это автономно компилир прог еди­ница, включ в себя спец образом оформлен библиотеку описаний (типы, конст, перемен, проц и фун).Модуль мож быть запущен только из прог или из другого модуля. Он компилир независимо от использ их прог. Результ компиляц явл файл с тем же именем и расширением .TPU, кот заносится на диск.Общий объем модульн прог может быть много более 64 кбайта, но каждый .TPU-файл не может превышать этот предел.Структура модуля.Модуль можно разделить на несколько разделов: заголо­вок; интерфейсная часть; исполняемая часть; инициализационная часть.UNIT <имя> {заголовок модуля}interface {интерфейсная часть} uses <список> {используемые при объявлении модули} label {блок объявлений библиотечных меток}const {блок объявлений библиотечных констант}type {блок объявлений библиотечных типов}var {блок объявлений библиотечных переменных}заголовки доступных процедур и функций с указанием парамет-ров> implementation {секция реализации} uses {используемые при реализации модули} label {блок объявлений внутренних меток} const {блок объявлений внутренних констант}type {блок объявлений внутренних типов}var {блок объявлений внутренних переменных}заголовки безпараметров и тела процедур и функции>Begin {секция инициализации}<операторы>EndВсе блоки, составляющие разделы интерфейса, реализации и инициализации необязательны и могут отсутствовать.Заголовок модуля состоит из зарезерв слова unit и имени модуля. Это имя должно сов­пад с именем дискового файла, в кот помещается исх текст модуля. В интерфейсной части содержатся объявления всех гло­бальных объектов модуля (типов, констант, переменных и под­программ), кот должны стать доступн любой прог. При объявлен библиотеч подпро­г в интерфейс части указ только их заголовок.В разделе реализац можно исп все объекты, описан в разделе interface. Он, содерж описан подпрог, объявлен в интерфейсн части. Описанию подпрогр, объявлен в интерфейсной части модуля, в исполняем части должен предшествовать заголовок, в кот можно опускать список формальных перемен. В разделе реализации могут объявл локальн для модуля объекты - типы, конст, перемен. Они будут гло­бальн по отношению к подпрогр этого раздела и ини­циирующей части. В проге, подкл модуль, объяв­ленные при реал данн и типы недоступны.Завершает модуль инициирующая часть. Она может отсут­ств вместе с начинающим еесловом Begin. Тогда сразу по­сле раздела реализац следует признак конца модуля End. В инициир часта размешают исполняем операт, котор вып до передачи управлен ос­новн проге и обычно исп для подготовки еера­боты. Обычно в ней вып присваивание нач значе­н библиотечн переменным, открытие файлов и т.п



Наши рекомендации