
- •Лабораторная работа №1 Структура программы на языке Pascal и организация ввода-вывода данных
- •Var Form1: tForm1;
- •Var z: integer;
- •Лабораторная работа № 2
- •Var X,a,y:real;
- •Лабораторная работа № 3 Проект с несколькими формами
- •Form1 (Unit1)
- •Var Form1: tForm1; X,y,s,r,p:real;
- •Implementation
- •Form2 (Unit2)
- •Implementation
- •Лабораторная работа №4
- •Var X ,I: integer;
- •Inc (I);{следующий номер делителя}
- •Var m,n,nod,nok:word; I,k:word;
- •Лабораторная работа №5
- •Var I,p:integer;
- •Var a:array[size]of integer;
- •I,n,imax:size;
- •Var I:size;
- •Var n:integer;//количество строк в поле Memo1
- •Var I,p:integer;
- •Var a:array[size,size]of integer; m,n:size; max:integer;
- •Imax,jmax: size; I,j,k: integer;
- •Лабораторная работа №6
- •Var Str:string; otvet, I, n: integer;
- •Лабораторная работа №7
- •Var f: textfile; I: integer;
- •Var f: textfile; ch:string; I,s: integer;
- •Vozr,rost:integer;
- •Var st,r:string; rzap:sz; I:integer; f1:TextFile;
- •Лабораторная работа №8
- •Interface
- •Лабораторная работа №9
- •Var I,j,k:integer;
- •Var I,j:integer;
- •Var b:vec; n1,I,j,k:integer;
- •Приложение 1
- •Приложение 2
Лабораторная работа №7
Работа с файлами
Цель работы:
изучить структуру данных - файл, типы файлов,
получить навыки работы с файлами.
Теоретическое введение
Язык Pascal поддерживает следующих три файловых типа:
Текстовые файлы (типа Text) состоят из кодов ASII, включая расширенные и управляющие коды. Текстовые файлы организуются по строкам и обязательно содержат специальный код, называемый концом файла.
Компонентные (типизированные) файлы (типа File Of) используются для хранения данных типа компонентов файла, определенных при его объявлении. Типизированные файлы могут содержать данные любых типов, кроме файловых.
Нетипизированные файлы (типа 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 |
строка строка запись файл файл |
Считанная из текстового файла строка Рабочая строка для формирования полей записи Компонента типизированного файла записи Заданный текстовый файл Сформированный типизированный файл |
Вид формы с компонентами:
Для создания приложения с таким видом формы выполним следующие действия.
Используя страницу Additional палитры компонент, поместим в верхней части формы компоненту StringGrid (таблица строк), растянем ее, если есть в этом необходимость. С помощью Инспектора Объектов добавим свойству Option (параметры) значение goEditing (возможность редактирования), для чего раскроем это свойство, активизировав его мышью, и зададим в строке goEditing значение True. С помощью Инспектора Объектов зададим так же следующие свойства:
ColCount
Число столбцов
8
FixedCols
Число фиксированных столбцов
0
FixedRows
Число фиксированных строк
1(для заголовка)
Выберем для формы в Инспекторе Объектов на странице 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;
Активизируем мышью кнопку “Создание типизированного файла” и в появившемся обработчике запишем текст:
procedure TForm1.Button1Click(Sender: TObject);
type sz=record
fio:string[15];