Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PASСAL_a4_2007.doc
Скачиваний:
31
Добавлен:
13.09.2019
Размер:
2.51 Mб
Скачать

Лабораторная работа 39. Работа с типизированными файлами как с файлами прямого доступа

1. Теория

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

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

1. Открыть существующий на диске типизированный файл с помощью процедуры Reset. В этом случае информацию можно читать с помощью процедуры Read и писать с помощью процедуры Write.

2. Для реализации прямого доступа к конкретной записи имеется стандартная процедура Seek, имеющая следующую структуру:

Seek(<имя файловой переменной>,<номер записи>);

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

Пусть, например, файл FORMA.DAT имеет 450 записей и нам необходимо считать 225 запись. Тогда выполняется следующая последовательность действий:

...

f : file of block;

cars: block;

...

begin

...

assign(f,'forma.dat');

Reset(f);

...

Seek(f,225); {Установили указатель на запись номер 225}

Read(f,cars); {считали запись с данным номером в переменную cars}

...

3. Для определения общего КОЛИЧЕСТВА записей в файле используется функция FileSize. Общий вид функции:

FileSize(<имя файловой переменной>);

4. Для определения номера записи в файле, на которую в данный момент установлен указатель, используется функция

FilePos(<имя файловой переменной>);

Пример использования:

...

f: file of block;

n, size : word;

cars:block;

...

begin

...

assign(f,'forma.dat');

Reset(f);

size:=FileSize(outf); {количество записей}

n:=FilePos(outf); {номер записи в файле}

writeln(n);

...

2. Практика

Задание 1

Скопируйте в свой каталог файлы file1.pas и file2.pas. Запустите среду Turbo Pascal.

Задание 2

Загрузите файл file1.pas. Разберитесь в назначении процедуры Sort.

Задание 3

Составьте программу сортировки файла biss.dat (созданного Вами в предыдущей лабораторной работе) по названиям товаров в алфавитном порядке. После сортировки программа должна выдать весь файл на экран. Проследите за тем, чтобы в файле было не меньше 20 записей.

Задание 4

Составьте программу, которая будет ДОПИСЫВАТЬ информацию в конец файла biss.dat.

Подсказка

Дописывать в конец файла достаточно просто. Для этого необходимо:

a) установить дисковую головку в конец файла с помощью команды Seek(f,FileSize(f));

б) после этого записывать данные в файл.

Лабораторная работа 40. Дополнительные возможности, или что можно еще натворить...

1. Что можно делать с файлами и каталогами

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

Rename(var f; NewName : sting); - процедура позволяет переименовать физический файл, ранее связанный с файловой переменной f, в имя NewName. Процедура выполняется над закрытым файлом.

Erase(var f); - стирает (если это возможно) физический файл, связанный с файловой переменной f. Стираемый файл должен быть закрытым.

GetDir(Drive : byte; var S : string); - возвращает в строке S текущее имя каталога на диске с индексом Drive. Диск задается его номером: 0 - текущий, 1 - диск А, 2 - диск В и т.д.

ChDir(S : String); - устанавливает текущим каталог с именем, содержащемся в S

MkDir(S : String); - создает каталог с именем из S на диске.

RmDir(S : String); - удаляет пустой каталог с именем из S с диска.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]