Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Типизированные файлы, их назначение и использование. Основные процедуры обработки типизированных файлов




Типизированный файл - это последовательность элементов одного типа. При последовательном обращении к файлу текущий указатель переходит от элемента к элементу.

Формат описания

TYPE <имя>=FILE OF <тип элементов>

VAR < имя файла >: <имя>

или без объявления файлового типа

VAR < имя файла >: FILE of <тип элементов>;

Допустим, мы имеем дело с файлом, в котором записываются переменные типа Word, тогда переменная файлового типа может быть введена двояко: с явным объявлением файлового типа:

Type WordFile = file of word;

Var MyFile: WordFile;

или

Var MyFile: file of word;

Приведем примеры переменных файлового типа с другими объявлениями.

Type Student = record

Name, SerName: string;

YearOld: byte;

Sessia: array [1..10] of byte;

end;

Var VarFile1: file of char;

VarFile2: file of Student;

VarFile3: file of string;

Файловые переменные имеют специфическое применение. Над ними нельзя выполнять никаких операций (присваивать значение, сравнивать и др.). Их можно использовать только для выполнения операций с файлами (чтения, записи, удаления файла и т.д.). Через файловую переменную можно получить информацию о конкретном файле (тип, параметры, имя файла и т.д.).

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

С каждым файлом можно связать понятие текущий указатель. Это неявно описанная переменная, которая указывает на конкретный элемент файла. Действия с файлами производятся поэлементно, причем в них участвует тот элемент, на который "смотрит" текущий указатель, перемещающийся в результате выполнения действия на следующий элемент.

А самое основное, что необходимо делать над файлом – это записать информацию из программы в файл и считать нужную информацию в выделенную переменную для обработки программой.

Изменение имени файла производится процедурой RENAME(МуFilе, FileName);

первый аргумент которой - переменная файлового типа, а второй аргумент - строкового типа - новое имя файла, которое может быть сокращенным или полным (с указанием пути). Действие этой процедуры эквивалентно действию аналогичной процедуры DOS.

Уничтожение части файла от текущего положения до конца производится процедурой TRUNCATE(МуFilе);

Уничтожение всего файла производится процедурой ERASE(МуFilе); действие которой эквивалентно удалению файла в операционной системе DOS.

Примечание. Физические файлы на магнитных дисках и переменные файлового типа в программе на Паскале - объекты различные. Переменные файлового типа в Паскале соответствуют не только физическим файлам, но и логическим устройствам, связанным с вводом и выводом информации. Клавиатуре и экрану дисплея соответствуют файлы со стандартными именами Input и Output.

Задание. Рассмотрите предложенный ниже текст программы. Сформулируйте решенную задачу. Создайте расширенный вариант подобной задачи.

Program Files;

Uses Crt;

Var F,Fnew: file of string;

Name,NewName: string[12];

Text: string;

Ch: char;

Procedure ReadText;

Begin

repeat

write('Введите имя файла>'); readln(Name);

assign(F,Name); reset(F);

if IOresult<>0

then begin writeln('Ошибка чтения'); close(F); end;

until IOresult=0;

writeln('Содержание файла ',Name,':');

while not Eof(F) do begin readln(F,Tеxt); writeln(Tеxt); end;

close(F);

End;

Procedure EraseFile;

Begin erase(F); writeln('Файл удален');End;

Procedure ReNameFile;

Begin

write('Введите новое имя файла:');

readln(NewName); rename(F,NewName);

writeln('Файл ',Name,' переименован в файл ',NewName);

End;

Procedure CopyFile;

Begin

write('Введите имя копии файла ',Name,'>');

readln(NewName); reset(F);

assign(Fnew,NewName); rewrite(Fnew);

while not Eof(f) do

begin readln(F,Text); writeln(Fnew,Text); end;

close(F); close(F_new);

writeln('Файл',Name,' скопирован в файл ',NewName);

End;

Begin

ClrScr; readTеxt;

repeat

writeln('Удаление файла (D),переименование файла(R)');

writeln('Копирование файла (C), выход из программы (Е)');

write('Введите символ нужной операции - ');readln(ch);

case ch of

'D','d': EraseFile;

'R','r': ReNameFile;

'C','c': CopyFile;

end;

until (ch='E') or (ch='e');

read;

End.

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

Задание 1. Наберите предложенную для рассмотрения выше программу и дополните ее выводом на экран элементов файла (воспользуйтесь процедурой считывания из файла READ и вывода WRITE).

Задание 2. Создайте программу записи и чтения типизированного файла типа string.

 




Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 1173; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.