Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Новая методичка.rtf
Скачиваний:
7
Добавлен:
22.07.2019
Размер:
7.64 Mб
Скачать

Лабораторная работа №7

Работа с файлами

Цель работы:

  • изучить структуру данных - файл, типы файлов,

  • получить навыки работы с файлами.

Теоретическое введение

Язык Pascal поддерживает следующих три файловых типа:

  1. Текстовые файлы (типа Text) состоят из кодов ASII, включая расширенные и управляющие коды. Текстовые файлы организуются по строкам и обязательно содержат специальный код, называемый концом файла.

  2. Компонентные (типизированные) файлы (типа File Of) используются для хранения данных типа компонентов файла, определенных при его объявлении. Типизированные файлы могут содержать данные любых типов, кроме файловых.

  3. Нетипизированные файлы (типа File) отличаются тем, что для них не указывается тип компонентов файла. Эти файлы используют для высокоскоростного копирования файлов.

Pascal имеет стандартные процедуры применимые к файлам любых типов (Таблица 2).

Таблица 2. Стандартные процедуры работы с файлами

Процедура или

функция

Действие

Assign (var f ;

FileName : String )

Связывает файловую переменную с именем физического файла, заданным в FileName

Reset (var f)

Открывает файл с логическим именем f для чтения

Rewrite (var f)

Открывает файл с логическим именем f для записи

Close (var f)

Закрывает файл с логическим именем f

Rename

(var f;NewName:

String)

Переименовывает физический файл, ранее связанный с файловой переменной f, в NewName (применима лишь к закрытым файлам)

Erase ( var f )

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

EOF(var f): Boolean

Возвращает значение True, если достигнут конец файла f, иначе возвращает False

Пример 7.1. Работа с типизированным файлом

Дано: файл F, компоненты которого являются целыми числами. Найти количество нечетных чисел в данном файле.

Вид компонентов на форме:

Программа обработки щелчка на кнопке "Создать файл"

procedure TForm1.Button1Click(Sender: TObject);

Var f: textfile; I: integer;

begin assignfile(f,'c:\1\Frr.txt'); rewrite(f);

for i:=1 to 39 do writeln(f,IntToStr(i));

closefile(f); end;

Программа обработки щелчка на кнопке "Вычислить"

procedure TForm1.Button2Click(Sender: TObject);

Var f: textfile; ch:string; I,s: integer;

begin

Label2.Caption:='нечетныe числa:';

assignfile(f,'c:\1\Frr.txt'); reset(f); s:=0;

while not eof(f) do begin readln(f,ch);

i:=StrToInt(ch);

if (i mod 2) <> 0 then s:=s+1;

Label2.Caption:=Label2.Caption+ ' '+IntToStr(i); end;

Label3.Caption:=inttostr(s); end;

Дфиуд1юСфзешщтЖ=эколичество нечетных чисел = э+ШтеЕщЫек(ы)ж утвж

Пример 7.2 Преобразование текстового файла

в типизированный

Постановка задачи: из заданного текстового файла создать типизированный файл, а затем содержимое нового файла вывести в таблицу.Для выполнения работы берется исходный текстовый файл IS.txt, созданный в редакторе Notepad и хранящийся в той же папке, что и проект.

Структура файла IS.txt:

1

2

3

4

5

6

7

8

Ф.И.О.

Возраст

Рост

Цвет

глаз

Цвет

волос

Зарплата

Наличие

машины

Наличие

квартиры

Позиции

1-15

16-17

19-21

23-32

33-41

42-47

48-51

52-54

В столбцах 1, 2, 3, 4, 5, 7, 8 данные “прижаты” к левой границе отведенного поля позиций. В столбце 6 младшая цифра записана в 46-й позиции.

Содержимое исходного файла IS.txt:

Иванов И.И. 19 158 серый брюнет 600 нет нет

Петрова Н.А. 23 162 карий шатен 1200 да да

Алексеев В.И. 32 178 серый блондин 15000 да нет

Яковлева Т.Г. 25 159 голубой русый 7500 нет да

Корнев Б.П. 28 169 голубой блондин 10800 да да

Описание переменных:

Имя

Тип

Семантика

st

r

rzap

f1

f2

строка

строка

запись

файл

файл

Считанная из текстового файла строка

Рабочая строка для формирования полей записи

Компонента типизированного файла записи

Заданный текстовый файл

Сформированный типизированный файл

Вид формы с компонентами:

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

  1. Используя страницу Additional палитры компонент, поместим в верхней части формы компоненту StringGrid (таблица строк), растянем ее, если есть в этом необходимость. С помощью Инспектора Объектов добавим свойству Option (параметры) значение goEditing (возможность редактирования), для чего раскроем это свойство, активизировав его мышью, и зададим в строке goEditing значение True. С помощью Инспектора Объектов зададим так же следующие свойства:

    ColCount

    Число столбцов

    8

    FixedCols

    Число фиксированных столбцов

    0

    FixedRows

    Число фиксированных строк

    1(для заголовка)

  2. Выберем для формы в Инспекторе Объектов на странице Events событие OnCreate и активизируем его мышью. Это событие появляется при создании формы. В появившемся обработчике событий запишем текст, формирующий заголовки столбцов таблицы.

procedure TForm1.FormCreate(Sender: TObject);

begin

with StringGrid1 do

begin

cells[0, 0]:='ФИО';

cells[1, 0]:='Возраст';

cells[2, 0]:='Рост';

cells[3, 0]:='Цвет глаз';

cells[4, 0]:='Цвет волос';

cells[5, 0]:='Зарплата';

cells[6, 0]:='Машина';

cells[7, 0]:='Квартира'

end

end;

  1. Активизируем мышью кнопку “Создание типизированного файла” и в появившемся обработчике запишем текст:

procedure TForm1.Button1Click(Sender: TObject);

type sz=record

fio:string[15];