Следующая программа
ведет простую базу данных. При каждом ее запуске на экране появляется диалоговое
окно (рис. 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