Листинг 26. Чтение записей из файла
unitrdrec_;
Interface
Uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
Type
TForm1 = class(TForm)
RadioButton1: TRadioButton; // переключатель Все
RadioButton2: TRadioButton; // переключатель Выбрать
// текст Страна
Button1: TButton;
GroupBox1: TGroupBox;
Label1: TLabe1;
procedureButton1Click(Sender: TObject);
procedureRadioButton2Click(Sender: TObject);
procedureRadioButton1Click(Sender: TObject);
ComboBox1: TComboBox; // комбинированный список
// для ввода названия страны
Memol: TMemo; // поле вывода записей, удовлетворяющих
// условию запроса
private
{ Private declarations } public
{ Public declarations } end;
Var
Form1: TForm1;
Implementation
{$R *.DFM}
procedureTForm1.Button1Click(Sender: TObject) ;
Type
// тип медали
TKind = (GOLD,SILVER,BRONZE);
// запись файла
TMedal = record
country:string[20]; sport:string[20];
person:string[40]; kind:TKind;
End;
Var
f: file of TMedal; // файл записей
rec: TMedal; // запись, прочитанная из файла
n: integer; // кол-во записей, удовлетворяющих запросу
st: string[80];
Begin
AssignFile(f,'a:\medals.db');
{$I-}
Reset (f); // открыть файл для чтения
{$I-}
ifIOResult <>0 then begin
ShowMessage('Ошибка открытия файла БД.');
Exit;
End;
// обработка БД
ifRadioButton2.Checked then
Memo1.Lines.Add('*** ' + ComboBox1.Text + ' ***'); n := 0;
Memol.Clear; // очистить список поля Memo
while notEOF(f) do begin
read(f, rec); // прочитать запись
if RadioButton1.Checked or
(rec.country = ComboBoxl.Text) then begin
n := n + 1;
st := rec.person+ ', ' + rec.sport;
ifRadioButtonl.Checked then
st := st + ', '+ rec.country; caserec.kind of
GOLD: st := st+ ', золото';
SILVER:st := st+ ', серебро';
BRONZE:st := st+ ', бронза';
End;
Memo1.Lines.Add(st); end;
End;
CloseFile(f); if n = 0 then
ShowMessage('В БД нет запрашиваемой информации.');
End;
// переключатель Выбрать
procedureTForm1.RadioButton2Click(Sender: TObject);
Begin
Label1.Enabled := True;
ComboBox1.Enabled := True; // теперь поле Страна доступно
ComboBox1.SetFocus; // курсор в поле Страна
End;
// переключатель Все
procedureTForm1.RadioButton1Click(Sender: TObject);
Begin
Label1.Enabled := False;
ComboBox1.Enabled := False; // теперь поле Страна не доступно
End;
End.
Процедура TForm1.Button1Click открывает файл и последовательно считывает находящиеся в нем записи. Содержимое записи добавляется в поле Memol, если прочитанная запись удовлетворяет условию запроса, т. е. содержимое поля country совпадает с названием страны, введенным пользователем в поле редактирования компонента ComboBox1, или если выбран переключатель RadioButton1.
Информация в поле Memo добавляется инструкцией Memo1.Lines.Add(st), которая является инструкцией применения метода Add (Добавить) к компоненту Memo1.
Дата добавления: 2014-12-01; просмотров: 835;