Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Листинг 8.2. Чтение записей из файла






unit rdrec_;

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;

procedure Button1Click(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure RadioButton1Click(Sender: TObject);

ComboBox1: TComboBox; // комбинированный список

// для ввода названия страны

Memol: TMemo; // поле вывода записей, удовлетворяющих

// условию запроса

private

{ Private declarations } public

{ Public declarations } end;

Var

Form1: TForm1;

Implementation

{$R *.DFM}

procedure TForm1.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-}

if IOResult < > 0 then begin

ShowMessage('Ошибка открытия файла БД.');

Exit;

End;

// обработка БД

if RadioButton2.Checked then

Memo1.Lines.Add('*** ' + ComboBox1.Text + ' ***'); n: = 0;

Memol.Clear; // очистить список поля Memo

while not EOF(f) do begin

read(f, rec); // прочитать запись

if RadioButton1.Checked or

(rec.country = ComboBoxl.Text) then begin

n: = n + 1;

st: = rec.person+ ', ' + rec.sport;

if RadioButtonl.Checked then

st: = st + ', '+ rec.country; case rec.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;

// переключатель Выбрать

procedure TForm1.RadioButton2Click(Sender: TObject);

Begin

Label1.Enabled: = True;

ComboBox1.Enabled: = True; // теперь поле Страна доступно

ComboBox1.SetFocus; // курсор в поле Страна

End;

// переключатель Все

procedure TForm1.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.


 

III. Контрольные вопросы

1. Типы данных, определяемых в программе

2. Перечисляемый тип

3. Интервальный тип

4. Запись

a. Объявление записи

b. Инструкция with

c. Ввод и вывод записей в файл

d. Вывод записи в файл

e. Чтение записи из файла

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.