Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatica / LabTab.doc
Скачиваний:
12
Добавлен:
09.04.2015
Размер:
60.93 Кб
Скачать

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

Текстовые файлы являются файлами последовательного доступа. В них данные располагаются в виде строк разной длины. Каждая строка заканчивается двумя символами #13#10 (#13 – возврат каретки, #10 – перевод строки). Эти символы отделяют строки друг от друга. Максимальный размер строки ограничен, чаще всего он равен 128 символам. Можно его увеличить до 255 символов. При поиске нужной информации в таком файле необходимо найти #13#10, прочитать найденную строку и проверить, есть ли заданная информация в этой строке. Если ее нет, следует опять искать #13#10 и т.д. Таким образом, поиск можно осуществлять, читая этот файл с начала последовательно, т.е. файл рассматривается как массив строк, разделенных символами #13#10. Если нужно вставить информацию в середину такого файла, то это можно сделать, переписывая старый файл в новый со вставкой новых строк и последующим удалением старого файла. Операционная система допускает дописывание информации в конец файла.

Текстовые файлы объявляются с помощью файловой переменной типа TextFile, например:

Var Fl: TextFile;

Перед тем как начинать работу с файлом, необходимо файловую переменную связать с конкретным файлом. Это осуществляется с помощью встроенной процедуры

AssignFile(Fl,Str),

где Fl – файловая переменная, Str – строка типа String, содержащая имя файла. Строка Str должна содержать полное имя файла, если он не расположен в той же папке, где расположен сам проект.

По окончании работы с файлом его нужно закрыть процедурой Close(Fl). Это требование обязательно должно соблюдаться для файлов, в которые записывалась информация.

Перед чтением необходимо явно указать, что файл будет использоваться для чтения с помощью процедуры Reset(Fl). Чтение можно производить только из существующего файла. Ситуация, когда файл, открываемый для чтения, не существует, считается ошибкой. Процедура Reset(Fl) переводит файл Fl в режим чтения и устанавливает файловый указатель на начало файла. Она может быть применена к одному и тому же файлу сколько угодно раз. Чтение информации осуществляется с помощью процедур

Readln(Fl,<список имен перем.>) или Read(Fl,<список имен перем.>).

Первая процедура полностью читает строку вместе с символами #13#10. Вторая процедура читает элемент или несколько элементов, но в пределах одной строки. Например, если a, b, с – строковые переменные, то оператор Read(Fl,a,b,c) заполнит данными только переменную a (b и c останутся пустыми).

Несмотря на то, что текстовые файлы состоят из строк, они могут содержать и другие данные, например, числовые. Прочитать из текстового файла можно данные целого, вещественного, символьного и строкового типов. Дополнительно к перечисленным можно записывать и логический тип данных.

При чтении чисел автоматически происходит перекодирование информации в двоичный код. Если элементы не строковые, то в пределах одной строки файла может находиться несколько элементов, обязательно отделенных друг от друга разделителями. В качестве разделителей используются символы пробел, табуляции, возврат каретки (#13).При подготовке информации разделители необходимо записывать в явном виде. Процедуры Read и Readln читают информацию последовательно по одному символу (в том числе читаются #13, #10 и #26 – конец файла), причем, если чтение происходит не в строковые переменные, то значи­мыми для Read являются все виды разделителей, а для Readln – только #13 и #10. Например, при чтении информации в строковые переменные типа String или Pchar заносятся очередные символы до #13 и #10.

В каждый момент времени можно прочитать только одну компоненту файла, присвоив ее значение некоторой переменной. Доступная компонента определяется положением файлового указателя. Если необходима предшествующая компонента, то, установив с помощью процедуры Reset файловый указатель на начало файла, последовательно перебирая компоненты с помощью процедур Readln и Read, можно дойти до нужной.

Для подготовки текстовых файлов можно использовать не только программную среду Delphi, но и любые простые редакторы.

Запись информации в файл осуществляется процедурами

Write(Fl,<список вывода>) или Writeln(Fl,<список вывода>).

Write записывает очередной элемент строки, Writeln записывает элемент строки вместе с символами #13 и #10.

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

Текстовый файл можно дописывать с помощью задания спе­циального режима процедурой Append(Fl). Эта процедура устанавливает для существующего файла режим записи и помещает файловый указатель в его конец. Прежнее содержимое файла при этом сохраняется.

Модуль

Модуль – это автономно компилируемая программная единица, включающая различные компоненты раздела описаний (типы, константы, переменные, процедуры и функции) и некоторые исполняемые операторы.

Модуль состоит из следующих частей:

  • заголовок (Unit);

  • интерфейсная часть (Interface);

  • исполнительная часть (Implementation);

  • секция инициализации (Initialization);

  • секция завершения (Finalization);

  • ключевое слово end с точкой.

Особенностью является то, что каждая из частей может присут­ствовать только один раз и их последовательность только такая, как указано выше. Секции инициализации и завершения могут отсутствовать.

Заголовок начинается с ключевого слова Unit, за которым следует имя. Имя модуля используется как имя файла, в котором записы­вается текст программы. По умолчанию Delphi присваивает модулю имя Unit1. Это имя можно изменить при сохранении файла.

Интерфейсная часть начинается с ключевого слова Interface, а заканчивается началом исполнительной части. Эта часть модуля доступна (видна) для других программных единиц. В интерфейсной части сосредоточены описания глобальных типов, констант и переменных, а также приводятся заголовки глобальных процедур и функций.

За интерфейсной частью следует исполнительная часть, которая начинается с ключевого слова Implementation, а завершается нача­лом секции инициализации, если она есть, или ключевым словом end. В этой секции определяются все процедуры и функции, методы классов и обработчики событий, объявленные в интерфейсной части. Дополнительно могут содержаться определения программных элементов, которые не объявлены в интерфейсной части. Такие программные элементы не доступны для других программных единиц и используются только для выполнения каких-либо действий в данной секции.

Секция инициализации содержит операторы, которые выпол­няются только один раз при запуске модуля и осуществляют какие-либо вспомогательные действия: открывают файлы, инициализируют переменные и т.п. Начинается эта секция ключевым словом Initialization. Эта секция необязательна.

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

Пример.

Приведем пример модуля, содержащего процедуры ввода матрицы с клавиатуры и вывода ее на экран

Unit matrix;

Соседние файлы в папке Informatica