Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Типизированные файлыК типизированным файлам относятся файлы строго определенного типа. Чаще всего это файлы, состоящие из записей. Они применяются для создания различных баз данных. Стандартное задание в программе такой файловой переменной осуществляется следующим образом: Type «имя типа»=record …. end; Var F: file of «имя типа»; Если в текстовых файлах содержимое рассматривается как наборы символов, подготовленные специальным образом с учетом общепринятых соглашений о представлении текстовой информации, то в типизированных файлах их содержимое рассматривается как последовательность записей определенной структуры. Единицей измерения такого набора данных является сама запись. Длина записи всегда одинакова, что дает возможность организовать прямой доступ к любому компоненту по его порядковому номеру, поэтому типизированные файлы часто называют файлами прямого доступа. Seek(«имя файловой переменной»; «номер»)- Процедура устанавливает текущую файловую переменную на запись с указанным номером; файловая переменная для типизированных и нетипизированных наборов данных. При открытии типизированного файла текущая позиция для работы с ним установлена на начало первой записи, которая по принятым соглашениям имет номер 0, т. е. номер физической записи на единицу меньше номера логической записи. Это небольшое несоответствие в номерах может служить причиной возникновения ошибок чтения-записи, что в результате может привести к нарушению целостности важной информации. Положение усугубляется тем, что неверное позиционирование на запись с помощью процедуры Seek, как правило, не приводит к каким-либо видимым ошибкам ввода-вывода, на которые всегда можно отреагировать. Исключение составляют ситуации, когда нет доступа к файлу, файл не открыт или назначено позиционирование на несуществующую запись. Такие ситуации обрабатываются с помощью функции lOresult. Типизированные файлы позволяют организовать работу в режиме чтения-записи. Эта возможность играет решающую роль при определении, каким типам файлов отдать предпочтение для большинства прикладных задач. Информация в типизированных наборах данных представлена в том же виде, как и в памяти машины во время выполнения программы, поэтому не надо отслеживать управляющие последовательности типа конец строки или возврат каретки. Для работы с файлами прямого доступа дополнительно можно использовать радующие средства: Truncate(«файл. переменная»)- Процедура уничтожает все компоненты файла, начиная с места текущего положения файлового указателя. FilePos(«файл. переменная»)- Функция возвращает для файла текущую файловую позицию (номер записи, на которую она установлена) в виде значения типа Longlnt FilеSize («файл. переменная»)- функция, возвращает файлу его размер (количество записей) в виде значения типа Longint. Для пустого файла вызов FifeSize возвращает значение 0. Локализация ошибок при обращении, к внешним носителям для обоих функций производится через функцию lOresult. Для того чтобы очередная запись могла быть записана в конец типизировавго файла, необходимо перевести текущую файловую позицию в конец файла, где создается новый файл, это происходит автоматически после формирования каждой очередной записи. Если файл уже создан и файловая позиция, установлена по Seek, находится где-нибудь в начале файла (FilePos(F) < FileSize(F)), то в конец файла ее позволяет перевести вызов Seek (F, FileSize (F)) В каждом файле число логических и физических записей совпадает, а при позиционировании номер физической записи на единицу меньше номера логической записи. Задание. Создать файл, содержащий фамилии и телефоны знакомых. Предусмотреть поиск по фамилии, просмотр справочника. Program _; Uses crt; type tel=record FIO:string[30]; nomer: longint; end; file_tel= file of tel; var f:file_tel; name,st:string; Procedure vvod_zapisi(var z: tel); begin writeln('введите ФИО и номер телефона');
with z do begin readln(fio); readln(nomer); end; end; procedure VVod_file(var r:file_tel); var n,i:byte; z:tel; begin rewrite(r); writeln('сколько записей будем вводить'); readln(n); for i:=1 to n do begin vvod_zapisi(z); write(r,z); end; close(r); readln; end; Procedure vivod_zapisi(z: tel); begin write(z.fio:20); writeln(z.nomer:15); end; procedure shapka; begin textcolor(5); write(' ФИО ':20); writeln(' телефон ':15); textcolor(15); end;
procedure ViVod_file(var r:file_tel); var n,i:byte; z:tel; begin
clrscr; shapka; reset(r); i:=0; while not(eof(r)) do begin seek(r,i); read(r,z); vivod_zapisi(z); i:=i+1; end; close(r); readln; end; procedure poisk(var r:file_tel;s:string); var z:tel; i:byte; begin writeln('введите фио'); readln(s); reset(r); i:=0; clrscr; shapka; while not eof(r) do begin seek(r,i); read(r,z); if z.fio=s then vivod_zapisi(z); i:=i+1; end; readln; end;
procedure menu(var r:file_tel); var k:byte; begin repeat clrscr; writeln('что будем делать?'); writeln('1:создание телефонного справочника'); writeln('2:дозапись в справочник'); writeln('3:вывод справочника'); writeln('4:поиск по ФИО'); writeln('5: выход '); write('ваш выбор '); readln(k); case k of 1:vvod_file(r); {2:redak_file(r);} 3:vivod_file(r); 4:poisk(r,st) end; until k=5; end;
{основная программа} begin clrscr; writeln('введите имя файла'); readln(name); assign(f,name); menu(f); end. Лекция 40.
|