Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
68
Добавлен:
18.05.2015
Размер:
176.13 Кб
Скачать

Максимальная длина имени вместе с путем - 79 символов, например:

var finp: text; fout: file of string;

const name = 'c:\dir\subdir\out.txt'; begin

assign (finp,'123.dat'); assign (fout, name);

end.

2. СТАНДАРТНЫЕ ПРОЦЕДУРЫ ДЛЯ РАБОТЫ С ФАЙЛАМИ

Работа с файлами производится посредством следующих стандартных процедур:

Assign (var F;file; Name:string); - связывает имя файловой переменной F в программе с именем внешнего файла на диске Name. Здесь Name — выражение строкового типа вида

' диск: \имя_каталога\имя_подкаталога\... \имя_файла'

Если в параметре Name имена диска и подкаталога не указаны, то выбирается текущий диск и текущий каталог. Если вместо Name указать (без пробела), то файл F оказывается связанным со стандартным файлом ввода Input или со стандартным файлом вывода Output (в зависимости от того, как он будет открыт — для чтения или для записи). После выполнения процедуры Assign все действия над переменной F будут эквивалентны действиям над файлом, определяемым спецификацией Name. Процедуру Assign необходимо использовать до начала работы с файлом (до его открытия процедурой

Reset или Rewrite);

Reset(var F:file); — открывает файл F для чтения. При этом указатель файла устанавливается на первый элемент файла и Eof(F) = False. Если файл пустой, то Eof(F) = True; •

Rewrite(var F:file); — открывает новый файл F для записи. При этом уничтожается вся предыдущая информация в F и Eof(F) = True;

Read (var F:fiie; var X1,X2,..,Xn);— считывает в переменную X1 один элемент файла F (или несколько элементов в переменные X1, ..., Xn), начиная чтение с элемента, на который указывает текущий указатель. Если F опущено, то подразумевается стандартный файл Input. Read выполним только в случае, если Eof(F) = False;

Write (var F:file; var X1,X2,..,Xn);— записывает одно (X1) или более (X1… Хn) значений переменных в файл F, начиная с той позиции, на которую установлен указатель. Если F опущено, то подразумевается стандартный файл Output. Write выполним только в случае, если Eof(F) = True;

Сlose (var F:file); - закрывает файл F;

Seek(var F:file; N:longint);— позволяет осуществить прямой

доступ к элементам файла F. Здесь N — целая положительная константа, соответствующая порядковому номеру элемента в файле. Процедура Seek не выполняет операцию чтения или записи элемента файла. Она лишь перемещает указатель файла к элементу с номером N. При этом первый элемент файла имеет номер N=0, второй — N=1 и т. д.;

Erase(var F:file); - удаляет внешний файл, связанный с файловой переменной F;

Rename(var F:file; NewName:string);— присваивает внешнему файлу, связанному с файловой переменной F, новое имя NewName.

Стандартные функции FilePos(var F:file):longint и FileSize(var F: file):longint позволяют определить

соответственно текущее положение указателя (номер элемента) и размер (число элементов) файла F.

Рассмотрим пять основных операций с внешними файлами:

чтение файла;запись в файл;

добавление данных к файлу;запись и чтение файла;прямая выборка элементов файла

В каждом случае предполагается, что файл F в программе уже связан процедурой Assign с внешним файлом на диске.

ЧТЕНИЕ ФАЙЛА

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

Для чтения файла в программе необходимо выполнить следующие действия:

1.открыть файл для чтения (Reset);

2.ввести данные файла в программу (Read);

3.закрыть файл для чтения (Close).

Общая структура фрагмента программы, составленной для чтения файла, имеет вид:

Reset(F);

……………

Read( F, X1, Х2,..., XN);

……………..

Close(F);

Тип переменных XI, Х2…..XN должен соответствовать базовому типу элементов файла (это условие не обязательно для текстовых файлов.

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

Оператор Read последовательно присваивает переменным X1, Х2, ..., XN значения из файла F. Количество этих переменных не должно превышать

количества данных, которые могут быть введены из файла. В противном случае выполнение программы прекращается. Вместо Read (F,X1,X2,... ,Хn) можно

использовать несколько операторов Read:

Read(F,X1); Read(F,X2); Read(F,Xn);

После чтения очередного элемента указатель файла устанавливается на следующий за прочитанным элемент файла.

Процедура Close выполняет закрытие файла F.

Замечание. В Турбо-Паскале версии 7.0 повторный вызов процедуры Close для уже закрытых файлов приводит к ошибке ввода-вывода

Пример.

while not Eof(Fl) do begin

………

Read(Fl,Xl);

………….

end;

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

ЗАПИСЬ В ФАЙЛ

Под записью в файл понимается вывод результатов программы из оперативной памяти ЭВМ на диск, т. е. создание нового файла на внешнем устройстве. Внешний файл, в который записываются данные из программы, называют выходным*

Для записи файла в программе необходимо выполнить следующие действия:

1.открыть файл для записи (Rewrite);

2.вывести данные из программы в файл (Write);

3.закрыть файл для записи (Close);

Общая форма записи в файл имеет следующий вид:

Rewrite(F);

…………….

Write(F,Al,A2,... ,Аn);

……………………….

Close(F);

Здесь F — имя файла; Al, А2, ,.., An — выражения (в том числе константы и переменные) того же типа, что и элементы файла

Процедура Rewrite осуществляет подготовку к записи информации в файл F (очищает файл и устанавливает указатель в начало файла). Оператор Write записывает значения выражений Al,A2, .An по одному в конец файла F (после имеющейся в нем информации).

Пример. Составим программу формирования файла F, состоящего из целых чисел 1, 2, 3, 4, 5.

program Prl;

var F:fiie of integer; I: integer;

begin

Assign(F,'F'); Rewrite(F); for I:=1 to 5 do Write(F, I); Close(F);

end.

Мы рассмотрели два основных действия над последовательными файлами: их чтение и запись. Все остальные действия представляют собой сочетание записи и чтения файла.

ДОБАВЛЕНИЕ ДАННЫХ К ФАЙЛУ

Пусть необходимо к уже существующему файлу добавить ряд элементов. Для этого надо выполнить следующие действия:

1.открыть уже существующий файл F процедурой Reset;

2.установить указатель файла за последним его компонентом

3.процедурой Seek следующим образом:

Seek(F,FileSize(F));

4.записать дополнительные данные (Write);

5.закрыть файл (Close).

Пример. Пусть уже создан файл F, состоящий из целых чисел 1, 2, 3, 4, 5 (см. раздел «Запись в файл»). Необходимо добавить к этому файлу числа 10, 20, 30.

program Рг2;

var F: file of integer; I,X: integer;

begin Assign(F,’F'); Reset(F); Seek(F,FileSize(F)); for I:=1 to 3 do

begin X:=10*I; Write(F,X) end; Close(F); end.

В результате выполнения программы получим файл F, состоящий из чисел 1, 2, 3, 4, 5, 10, 20, 30.