Наступна програма веде просту базу даних. При кожному її запуску на екрані з’являється діалогове вікно (рис. 7.5), в поля якого користувач може ввести дату і температуру повітря.
Рис. 7.5. Діалогове вікно програми База даних <Погода>
Дата вводиться в поле Edit1, температура – в поле Edit2. Текст програми приведений в лістингу 7.3.
Лістинг 7.3, Проста база даних (запис в файл)
unit pogoda_; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = Class (TForm) Edit1: TEdit; // дата Edit2: TEdit; // температура Button1: TButton; // кнопка Додати Label1: TLabe1; Label2: TLabe1; procedure FormActivate (Sender: TObject); procedure ButtonlClick (Sender: TObject); procedure FormClose (Sender: TObject; var Action: TCloseAction); private {Private declarations} public {Public declarations} end; var Form1: TForm1; implementation {$ R * .dfm} const DBNAME = 'A: \ pogoda. db '; var db: TextFile; // файл - база даних procedure TForm1.FormActivate (Sender: TObject); begin AssignFile (db, DBNAME) ;. {$ I-} Append (db); if IOResult = 0 then begin Edit1.Text : = DateToStr (Date); // отримати поточну дату Edit2.SetFocus; // курсор в поле Edit2 end else begin Rewrite (db); if IOResult <> 0 then begin // зробити недоступними поля введення // і командну кнопку Edit1.Enabled : = False; Edit2.Enabled: = False; Buttonl.Enabled : = False; ShowMessage ( 'Помилка створення' + DBNAME); end; end; end; // клацання на кнопці Додати procedure TForml.Button1Click (Sender: TObject); begin if (Length (edit1.text) = 0) or (Length (edit2.text) = 0) then ShowMessage ( 'Помилка введення даних.' + # 13 + 'Bce поля повинні бути заповнені. ') else writeln (db, editl.text, '', edit2.text); end; // Подія OnClose виникає при закритті форми procedure TForm1.FormClose (Sender: TObject; var Action: TCloseAction); begin CloseFile (db); // закрити файл БД end; end.
Файл бази даних відкриває процедура FormActivate, яка обробляє подія onActivate. подія OnActivate виникає в момент активізації форми, тому процедура запускається автоматично, при активізації форми додатка. Якщо операція відкриття файлу завершується успішно, то в поле Edit1 записується поточна дата. Інформація про поточну дату повертає функція Date. Для перетворення повертається функцією Date значення (числа типу Double) в зручну для сприйняття форму використовується функція Dateiostr. Після запису дати в поле Editi процедура обробки події onActivate із застосуванням методу setFocus встановлює курсор в поле вводу температури. Якщо в процесі відкриття або створення нового файлу виникає помилка, то процедура робить недоступною кнопку Додати і виводить інформаційне повідомлення.
Процедура TForm1.Button1Click (Процедура обробки події onclick) запускається натисканням кнопки Додати (Button1). В результаті введена інформація записується в базу даних – файл pogoda.db. Перед виконанням запису програма перевіряє, чи всі поля форми заповнені, і, якщо не все, то виводить інформаційне повідомлення.
В результаті роботи процедури в кінець файлу pogoda.db буде додано рядок, що містить дату (число, місяць, рік) і температуру.
У даній програмі використовується інструкція writein, а не write, для того щоб дані за кожен день розташовувалися в базі даних на окремому рядку.
Зверніть увагу, що список виведення інструкції writein складається з трьох елементів. після виведення в файл дати (Edit1.text) в файл записується пробіл, а потім-температура (edit2.txt). Якщо температуру записати в файл відразу після дати, то числа, відповідні році і температурі, зіллються в одну послідовність цифр.
Закриває базу даних процедура TFormi.Formciose, яка обробляє подія enclose, що виникає при закритті форми додатка.
Після декількох запусків програми файл pogoda.db може бути, наприклад, таким:
9.05.2001 10 10.05.2001 12 11.05.2001 10 12.05.2001 7