
- •Палітра Компонентів Delphi
- •Редактор Коду Delphi
- •Конструктор Форм
- •Інспектор Об’єктів. Принцип візуальної розробки програм
- •Завершення роботи з проектом та створення нового проекту
- •Збереження проекту
- •Відкриття існуючого проекту
- •Робота з Delphi-програмою Структура Delphi-програм
- •Виконання Delphi-програми
- •Завершення виконання Delphi-програми
- •Лабораторна робота №1
- •Завдання
- •Теоретичні відомості
- •Лабораторна робота №2
- •Розробка проекту «Діалог»
- •Мал. Діалог Аналіз проекту
- •Хід роботи
- •Завдання для самостійного виконання
- •Лабораторна робота №3
- •Завдання
- •Теоретичні відомості
- •Лабораторна робота №4
- •Розробка проекту «Ваша вага»
- •Хід роботи
- •Розробка проекту «Обмін валюти»
- •Хід роботи
- •Лабораторна робота №5
- •Завдання
- •Хід роботи
- •Теоретичні відомості Оператори if і case мови Паскаль
- •Кнопки-перемикачі в Delphi|
- •Лабораторна робота №6
- •Завдання
- •Хід роботи
- •Теоретичні відомості Типи даних для роботи з|із| рядками Короткі рядки типу|типа| ShortString| і String|[n]
- •Довгий рядок типу|типа| String|
- •Компонент tComboBox|
- •Компонент tBitBtn|
- •Обробка подій
- •Лабораторна робота №7
- •Розробка проекту «Гороскоп»
- •Хід роботи
- •Розробка проекту «Фізичний конвектор»
- •Хід роботи
- •Лабораторна робота №8
- •Розробка проекту «Рейтинг країн за результатами олімпійських змагань»
- •Хід роботи
- •Лабораторна робота №9
- •Розробка проекту «Журнал олімпіади»
- •Хід роботи
- •Лабораторна робота №10
- •Завдання
- •Хід роботи
- •2. Установка
- •3. Тестування створеної компоненти
- •Лабораторна робота №11
- •Розробка проекту «Побудова графіка функції»
- •Хід роботи
- •Лабораторна робота №12
- •Розробка проекту «Графічний конструктор»
- •Хід роботи
- •Лабораторна робота №13
- •Розробка проекту «Чат для локальної та глобальної мережі»
- •Хід роботи
- •Розробка форми на настройок
- •Розробка програмного коду
- •Лабораторна робота №14.
- •Завдання
- •Хід роботи
- •Теоретичні відомості
- •Етапи створення баз даних в Delphi.
- •Компонент тТаblе
- •Модуль даних
- •Лабораторна робота №15
- •Завдання
- •Хід роботи
- •Теоретичні відомості
- •Лабораторна робота №16
- •Завдання
- •Хід роботи
- •Теоретичні відомості
- •Лабораторна робота №17
- •Завдання
- •Хід роботи
- •Теоретичні відомості
- •Лабораторна робота №18
- •Завдання
- •Хід роботи
- •Теоретичні відомості
- •Список літератури
Лабораторна робота №9
Тема: Робота з файлами у Delphi.
Мета роботи: Написати програму з використанням файлів.
Розробка проекту «Журнал олімпіади»
Завдання. Розробити програму для створення журналу олімпіади та внесення до нього результатів змагань.
Аналіз проекту
У проекті будемо організовувати роботу з журналом олімпіади, використовуючи структурований тип даних – файл. Структурований тип даних файл – це послідовність елементів одного типу, які зазвичай розташовано у зовнішній пам'яті (жорсткому диску, гнучкому диску тощо). Елементи файла можуть бути будь-якого типу, за винятком типу «файл».
У файлі можуть зберігатися будь-які відомості: текст, числа і т.д. У кожного файла є своє унікальне ім’я. залежно від способу опису файли поділяються на:
типізовані – задаються за допомогою зарезервованих слів file, of;
текстові – визначаються типом TextFile;
не типізовані – визначаються типом File.
Доступ до файла з програми можливий лише після виконання процедури відкриття файла. В цій процедурі відбувається прив’язка раніше описаної файлової змінної до імені вже існуючого або створюваного файла. Цю операцію виконують процедура: Assign (файлова_змінна, ім’я_файлу).
Для подальшої роботи з файлом необхідно вказати способи роботи з файлом – читання з файла, або запис у ньому, або читання та запис одночасно. Для цього використовуються процедури Reset, rewrite, Append. Для зчитування записів з файла використовують процедуру Readln, а для запису даних у файл – процедуру Writeln.
Хід роботи
Алгоритм розробки проекту
Створити папку С:\Delphi\lab_9.
Завантажити середовище візуального програмування Delphi.
Розмістити на головній формі Form1 візуальні компоненти Edit1, ComboBox1, ComboBox2, RadioGroup1.
Для підпису цих полів розмістити на формі компоненти Label1-label4. встановити вищесказаним компонентам властивості як у табл.. 1.
Таблиця 1
Компонент |
Вкладка вікна «Інспектор об’єктів» (Object Inspector) |
Властивість (Properties)/ Подія (Events) |
Значення властивості/ обробка події (тіло процедури обробки події) |
Edit1 |
Properties |
Text |
Чисте поле |
ComboBox1 |
Properties |
Text |
Чисте поле |
Items |
У вікні вбудованого редактора списку ввести назви країн: Україна, Росія, Німеччина, Норвегія, Франція, Польща, Чехія, США |
||
ComboBox1 |
Properties |
Text |
Чисте поле |
Items |
У вікні вбудованого редактора списку ввести види спорту:
|
||
RadioGroup 1 |
Properties |
Items |
У вікні вбудованого редактора списку ввести типи медалей: золота, срібна, бронзова |
Для занесення даних до файла та перегляду вмісту файла розмістити на формі Form1 компоненти Button1, Button2 (табл. 2).
Таблиця 2
Компонент |
Вкладка вікна «Інспектор об’єктів» (Object Inspector) |
Властивість (Properties)/ Подія (Events) |
Значення властивості/ обробка події (тіло процедури обробки події) |
Button1 |
Properties |
Caption |
Додати запис |
Button2 |
Properties |
Caption |
Показати весь журнал |
Для відображення вмісту журналу олімпіади створити додаткову форму і розмістити на ній компонент Memo1. Для цього виконати послідовність дій: у головному меню середовища Delphi вибрати File, New, Forms. На створеній формі розмістити компонент Memo1.
Для створеної форми та розміщеного на ній компонента встановити властивості згідно з табл. 3.
Таблиця 3
Компонент |
Вкладка вікна «Інспектор об’єктів» (Object Inspector) |
Властивість (Properties)/ Подія (Events) |
Значення властивості/ обробка події (тіло процедури обробки події) |
Form2 |
Properties |
Name |
Result |
Caption |
Журнал олімпіади |
||
Memo1 |
Properties |
Align |
alClient – для заповнення всього поля форми компонентом Memo1 |
Для створеної форми Result середовищем Delphi було згенеровано програмний код, який необхідно зберегти в папці проекту. Для цього виконати File, Save.
В програмному коді головної форми Form1 додати типи перед розділом var:
TKind =(gold,silver,bronze);
tmedal=record
country:string[20];
sport:string[30];
person:string[40];
kind:TKind;
end;
У програмному коді головної форми Form1 додати опис змінних:
var f:file of Tmedal; // файл записів
Створити для головної форми Form1 процедуру опрацювання події OnActivate:
procedure TForm1.FormActivate(Sender: TObject);
var resp:word; //vidpovidi
begin
assignfile(f,'medals.txt');
{$I-}
reset(f); // відкриття файла для читання
seek(f,filesize(f)); //встановити покажчик запису в кінець файлу
{$I+}
if ioresult=0
then
Button1.Enabled:=true
else
begin
resp:=messagedlg('Файл журналу олімпіади не знайдено. '+'Створити новий файл?', mtinformation,[mbyes,mbno],0);
if resp=mryes then
begin
{$I-}
rewrite(f); // відкриття файлу для запису
{$I+}
if ioresult=0
then
Button1.Enabled:=true
else
begin
showmessage('Помилка при створенні файла');
close;
end;
end;
end;
end;
Запрограмувати натискання на кнопку «Додати запис» (подія OnClick):
procedure TForm1.Button1Click(Sender: TObject);
var medal:Tmedal;
begin
with medal do
begin
country:=ComboBox1.Text;
sport:=combobox2.text;
person:=edit1.Text;
case RadioGroup1.ItemIndex of
0:kind:=gold;
1:kind:=silver;
2:kind:=bronze;
end;
end;
write(f,medal);
Edit1.Text:='';
ComboBox1.Text:='';
ComboBox2.Text:='';
RadioGroup1.ItemIndex:=-1;
end;
Запрограмувати натискання на кнопку «Показати весь журнал» (подія OnClick):
procedure TForm1.Button2Click(Sender: TObject);
var medal:Tmedal;
m:string[15];
begin
closefile(f); // закрити файл
reset(f); // відкрити файл для читання
rezult.Memo1.Lines.Clear; // очистити поле компонента
while not eof(f) do
begin
read(f,medal); // зчитати запис з файла у змінну medal
with medal do
begin
case kind of
gold:m:='gold';
silver:m:='silver';
bronze:m:='bronze';
end;
// вивести в полі Memo1 дані з файла
rezult.Memo1.Lines.Add(person+'--'+country+'--'+
'--'+sport+'--'+m);
end;
end;
rezult.Memo1.Font.Color:=clblack;
rezult.Memo1.Font.Size:=12;
rezult.ShowModal; // завантаження форми «Журнал олімпіади»
end;
Зауваження. Для забезпечення зв’язку головного модуля з модулем Unit2 треба описати в головному модулі зовнішнє ім’я Unit2, включивши його до блоку реалізації (implementation):
Uses Unit2;
Після закриття форми необхідно закрити файл таки чином (подія OnClose для форми Form1):
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
closefile(f);
end;
Зберегти проект у папці С:\Delphi\lab_9.
Запустити проект та перевірити правильність його виконання.
Питання для самоконтролю:
1. Що таке файл?
2. Як поділяються файли залежно від способу опису?
3. Яка процедура пов’язує файлову змінну з конкретним файлом?
4. Яка процедура відкриває файл для записування в нього даних?
5. Яка процедура відкриває файл для зчитування з нього даних?
6. Яка процедура закриває файл після опрацювання?
7. Яка функція визначає чи кінець файлу?