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

Стандартные средства обработки файлов.

Процедура

Assign (ff, name);

- связывает файловую переменную ff с файлом на носителе, имя которого указано в name.

Name: string - в этой переменной хранится имя файла, а если необходимо и "путь".(не более79 символов)

В дальнейшем, в программе, при обращении к файлу используют только файловую переменную ff, имя файла более не используют.

var

ff: file of integer;

name: string [14];

begin

name: = 'test.dat';

assign (ff, name);

Можно задать имя файла в явном виде, указав путь:

Assign (ff, 'a:\test.dat');

Эта процедура выполняется только для закрытых файлов.

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

reset и rewrite.

Rewrite (ff);

- создает новый файл, имя которого указано в assign (ff, name), т.е. с именем, хранящимся в строковой переменной name.

Если файл с таким именем уже существует, его содержимое стирается. Создается новый пустой файл.

Указатель - находится в начале файла.

Reset(ff);

- открывает уже существующий файл с именем, указанным в assign. Файл доступен и для записи и для чтения.

Указатель - в начале файла.

Если файл отсутствует можно выключить директивы компилятора

{$I-}.

Функция IOResult - вырабатывает 0 если операция успешна.

Процедура

Close (ff);

- закрывает открытый ранее файл, имя которого было связано с файловой переменной ff через assign.

Во избежании потери или порчи информации, все открытые файлы в конце программы должны быть закрыты.

Функция

Eof (ff);

- при чтении информации из файла, вырабатывает два значения:

TRUE - если прочитана последняя запись, указатель находится за последним элементом файла;

FALSE - в противном случае.

Процедура

Read (ff, x);

- служит для чтения информации из файла, причем файл уже должен быть открыт с помощью

reset или rewrite.

ff - файловая переменная.

x - переменная того же типа, что и компоненты файла.

Процедура

Write(ff, x);

- служит для записи информации в файле (файл открыт через reset или rewrite).

ff - файловая переменная.

Процедура

Seek (ff, n);

- перемещает указатель в файле на элемент с номером n.

ff - файловая переменная;

n: longint.

Процедура

Truncate (ff);

- удаляет часть файла от текущей позиции указателя до конца.

Указатель устанавливается на конец файла.

Функция

Filepos (ff);

- возвращает номер текущей позиции указателя в файле (нумеруется от 0).

Filesize (ff);

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

Задача: создать файл, компоненты которого целые числа. Составить программу подсчета количественно отрицательных компонент файла.

Prgram prim;

uses ctr

var

ff: file of integer;

n, i, x, p: integer

begin

clrscr;

assign (ff, ‘pr.dat’);

Создание файла:

rewrite (ff); - создать новый файл pr.dat

read (n);

for i:= to n do

begin

read (x); - ввод значений

write (ff, x); - запись в файл

end;

Обработка:

reset (ff); - открыть уже существующий файл

repeat

read (ff, x); - читать из файла

if x<0 then p: =p + 1;

until eof (ff); - пока не конец файла

writeln (p);

close(ff); - закрыть файл

end.

ff – файловая переменная.

Создается файл pr.dat – содержит целые числа. Затем подсчитывается в р количество отрицательных компонент файла. Цикл продолжается, пока функция eof (ff) = TRUE, т.е. указатель после последней компоненты файла, т.е. прочитаны все компоненты файла. В текущем каталоге – появляется файл данных pr.dat.

Задача: (на базе предыдущей). Создать новый файл, содержащий только положительные компоненты файла pr.dat.

Program pr1;

var

ff: file of integer;

gg: file of integer;

x: integer;

begin

assign (ff, ‘pr.dat’);

assign (gg, ‘pr1.dat’);

reset (ff); - открыть существующий файл.

rewrite (gg); - создать новый pr1.dat

repeat

read (ff, x); - чтение из файла pr.dat

if x>0 then write (gg, x); - запись в файл pr1.dat

until eof (ff);

reset (gg); - переместить указатель в pr1.dat на начало

repeat

write (gg, x); - чтение из файла

writeln (x); - печать на экран

until eof (gg);

writeln (‘количество положенных элементов - ’, filesize (gg));

¯

количество компонент в новом файле pr1.dat

Закрыть оба файла:

close (ff);

сlose (gg);

end.

Задача: создать файл “Фирма” со структурой каждой записи:

Ф.И.О.

Год рождения

Стаж

Оклад

В программе предусмотреть возможность добавления записей в файл.

Program pr;

uses crt;

type

firma = record

sur: string [20];

gr, st, or: integer;

end;

var

ff: file of firma; ¬ (файловая переменная)

bf: firma; (буфер)

k: char;

begin

clrscr;

assign (ff, ‘firma. dat’);

write (‘создатьновый файл – Y, добавить в существующий - N’);

readln (k);

if k = ’Y’ then

rewrite (ff) (создать новый)

else

begin

reset (ff); (открыть существующий)

seek (ff, filesize(ff)); (указатель на конец файла)

end;

repeat

write (‘будете вводить – Y/N’); readln(k);

if k = ‘Y’ then

with bf do begin

Ввод с клавиатуры:

readln (sur); readln (g);

readln (st); readln (ok);

write (ff, bf); (запись в файл)

end;

until k = ‘N’;

close(ff);

end.

Задача: используя файл “Фирма” изменить (повысить) оклады сотрудникаим не старше 40 лет со стажем более 10 лет на 25%.

Sur – Ф.И.О., g – год рождения, st – стаж, ok – оклад.

Program pr;

type

firma = record

sur: string [20];

g, st: integer;

ok: real;

end;

var

ff: file of firma;

bf: firma;

begin

assign (ff, ‘firma.dat’);

reset (ff);

repeat

read (ff, bf);

if (1998-bf.g<40) and

(bf.st>10) then

begin

seek (ff, (filepos(ff) – 1));

bf, ok: bf.ok + bf.ok 14;

write (ff, bf); ¬ (записать запись на старое место в файле с новым окладом)

end;

until eof (ff);

reset (ff);

repeat

read (ff, bf);

writeln (bf.sur); writeln (bf.ok); ¬(распечатывается список сотрудников и их окладов)

until eof (ff);

close (ff);

end.

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