Прямой доступ к записям типизованного файла
Прямой (произвольный) доступ – это способ обработки файла, при котором можно в любой момент выполнять обращение к любой записи файла. Такой способ возможен для файлов всех типов, кроме текстового (т.е. для типизированных и нетипизированных). Напомним также, что в таких файлах каждой записи ставится в соответствие ее порядковый номер. Номера имеют значения 0, 1, 2, …
При использовании прямого доступа необходимо перед каждой операцией чтения (записи) задать номер записи, которая должна быть обработана. После выполнения операции указатель файла устанавливается перед следующей записью (т.е. перед записью с номером, увеличенным на 1). Для установки указателя на нужную запись используется специальная процедура Seek, которая в общем виде записывается так:
Иногда встречаются случаи, когда запись в файле может определяться своим порядковым номером. Например, табельный номер служащего или телефонный номер может равняться порядковому номеру записи в файле. В таком случае использование прямого доступа является совершенно естественным. Как правило, такой файл рекомендуется предварительно заполнить начальной информацией (нулями, пустыми строками). Затем в него записывается основная информация по номерам записей: по порядку или в разнобой, как это требуется в задаче.
Задача. Составить программу, формирующую телефонный справочник для учрежденческой АТС, имеющей двухзначные номера. Структура записей файла следующая: № телефона, Фамилия, Адрес (улица, номер дома и квартиры). Справочник имеет номера от 00 до 99.
Алгоритм создания такого файла может быть таким:
1. Открыть файл для записи
2. Сформировать "пустую запись":
2.1. Номер (N) = 0
2.2. Фамилия = ’’ { Пустая строка }
2.3. Адрес = ’’ { Пустая строка }
3. Для номера (k) от 0 до 99 выполнить
3.1. Установить указатель на номер k
3.2. Переписать запись в файл.
4. Повторять
4.1. Ввести номер,
4.2. Установить указатель файла на номер
4.3. Если не конец файла, то
а) Ввести Фамилию и Адрес,
б) Переписать запись в файл
Иначе
Вывести сообщение "Неправильный номер"
Пока не надоест.
5. Закончить.
При использовании прямого доступа необходимо перед каждой операцией чтения (записи) задать номер записи, которая должна быть обработана. После выполнения операции указатель файла устанавливается перед следующей записью (т.е. перед записью с номером, увеличенным на 1). Для установки указателя на нужную запись используется специальная процедура Seek, которая в общем виде записывается так:
Seek (Файл, Номер_записи);
Пример.
Seek(Filank,10); – поиск 10–той записи
Seek(f,i); – поиск i–той записи
Пример. Создание файла с использованием прямого доступа
Иногда встречаются случаи, когда запись в файле может определяться своим порядковым номером. Например, табельный номер служащего или телефонный номер может равняться порядковому номеру записи в файле. В таком случае использование прямого доступа является совершенно естественным. Как правило, такой файл рекомендуется предварительно заполнить начальной информацией (нулями, пустыми строками). Затем в него записывается основная информация по номерам записей: по порядку или в разнобой, как это требуется в задаче.
Задача. Составить программу, формирующую телефонный справочник для учрежденческой АТС, имеющей двухзначные номера. Структура записей файла следующая: № телефона, Фамилия, Адрес (улица, номер дома и квартиры). Справочник имеет номера от 00 до 99.
Алгоритм создания такого файла может быть таким:
1. Открыть файл для записи
2. Сформировать "пустую запись":
2.1. Номер (N) = 0
2.2. Фамилия = ’’ { Пустая строка }
2.3. Адрес = ’’ { Пустая строка }
3. Для номера (k) от 0 до 99 выполнить
3.1. Установить указатель на номер k
3.2. Переписать запись в файл.
4. Повторять
4.1. Ввести номер,
4.2. Установить указатель файла на номер
4.3. Если не конец файла, то
а) Ввести Фамилию и Адрес,
б) Переписать запись в файл
Иначе
Вывести сообщение "Неправильный номер"
Пока не надоест.
5. Закончить.
Program Sprav;
Const
N = 99;
Type
Tel=Record {запись справочника}
Nom : Integer;
Fam : String[15];
Adr : String[15]
End;
Var
fTel : file of Tel; {Телефонный справочник}
Rtl : Tel; {Одна запись файла}
K : integer;
S : char;
Begin
Assign(ftel,’tsprav’);
Rewrite (ftel); {п.1.}
With Rtl do {п.2. Создание "пустой" записи}
Begin
Nom := 0;
Fam := ’’;
Adr := ’’;
End;
{п.3. Заполнение НД пустыми записями}
For k:=0 to n do
Begin
Seek(ftel,k);
Write(ftel,Rtl);
end;
{п. 4. Заполнение Набора Данных информацией}
Repeat
Writeln (’Введите номер’) { п. 4.1. };
ReadLn (k);
Seek(ftel,k); { п. 4.2. }
If Not Eof(ftel) then { п. 4.3. }
Begin
With Rtl do
Begin
Writeln(’Фамилия’);
ReadLn (fam);
Writeln (’Адрес’);
ReadLn(Adr);
Nom := k;
end;
Write(ftel,Rtl);
end
Else
Writeln(’Неправильный номер’);
Writeln(’Продолжаем?-Да/Нет’);
Readln(S);
until (S=’H’) Or (S=’н’) Or(S=’n’) Or(S=’N’);
Writeln (’Конец работы. Нажмите клавишу ENTER’); {п. 5}
Readln;
end.
Такой доступ к файлам можно сравнить на аппаратном уровне с доступом к оригинальным частям для ремонта вашего смартфона, компьютера или телефона. Если вам также требуются запчасти для телефонов, то стоит заглянуть сюда: https://master-mobile.ru/catalog/zapchasti_dlya_telefonov_1/ - каталог запасных частей для ремонта.
Похожие публикации: