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