![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Листинг 8.2. Чтение записей из файла ⇐ ПредыдущаяСтр 5 из 5
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. Чтение записи из файла
|