Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




End.

Begin

Var

Begin

Else begin

Begin

Var

Implementation

Var

Type

Uses

Листинг 25. Добавление записей в файл

unit аррrес_;

interface

Windows, Messages, SysUtils, Classes,

Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

TForm1 = class(TForm) Label1: TLabel;

Label2: TLabel; Label3: TLabel;

Edit1: TEdit; // спортсмен

ComboBoxl: TComboBox; // страна

ComboBox2: TComboBox; // вид спорта

RadioGroup1: TRadioGroup; // медаль

Buttonl: TButton; // кнопка Добавить

Labels: TLabel;

Label4: TLabel;

procedure FormActivate(Sender: TObject);

procedure FormClose(Sender: TObject;

var Action: TCloseAction)

procedure ButtonlClick(Sender: TObject);

private

{ Private declarations } public

{ Public declarations } end;

// тип медали

TKind = (GOLD, SILVER, BRONZE);

// запись файла

TMedal= record

country: string [20]; // страна

sport: string [20]; // вид спорта

person: string[40]; // спортсмен

kind: TKind; // медаль

end;

Form1: TForm1;

f: file of TMedal; // файл записей — база данных

{$R *.DFM}

// активизация формы

procedure TForm1.FormActivate(Sender: TObject);

resp: word; // ответ пользователя

AssignFile(f, 'a:\medals.db');

{$I-}

Reset (f); // открыть файл

Seek(f, FileSize(f)); // указатель записи в конец файла

{$I!+}

if lOResult = 0

then buttonl.enabled:=TRUE // теперь кнопка Добавить доступна

resp:=MessageDlg('Файл базы данных не найден.'

+ 'Создать новую БД?', mtlnformation,[mbYes,mbNo],0);

if resp = mrYes then begin {$I-}

rewrite(f); {$!+}

if lOResult = 0

then buttonl.enabled:=TRUE

else ShowMessage('Ошибка создания файла БД.');

end;

end;

end;

// щелчок на кнопке Добавить

procedure TForml.Button1Click(Sender: TObject);

var

medal: TMedal;

with medal do begin

country:= ComboBox1.Text;

sport:= ComboBox2.Text;

person:= Edit1.Text;

case RadioGroup1.Itemlndex of

0: kind:= GOLD;

1: kind:= SILVER;

2: kind:= BRONZE;

end;

end;

write(f,medal); // записать содержимое полей записи в файл

end;

// завершение работы программы

procedure TForm1.FormClose(Sender: TObject;

Action: TCloseAction);

CloseFile(f); // закрыть файл

end;

В представленной программе процедура TForm1.FormActivate открывает файл базы данных для добавления. Здесь следует обратить внимание на то, как это реализовано. Процедуру AppendFile, которая открывает файл для добавления в конец, использовать нельзя, т. к. файл не является текстовым. Поэтому файл сначала открывается процедурой Rewrite в режиме перезаписи, а затем процедура Seek устанавливает указатель чтения/записи в конец файла. Параметром процедуры seek является функция Fiiesize, значение которой равно размеру файла (в байтах).

Процедура TForm1.Button1Click, которая запускается нажатием кнопки Добавить (Buttoni), выполняет непосредственное добавление записи в файл. Поля country и sport добавляемой записи заполняются из свойства Text комбинированных списков Страна (comboBoxi) и Вид спорта (ComboBox2).

Поле person формируемой записи заполняется из поля ввода Спортсмен (компонент Editi), а содержимое поля medal определяется выбранной кнопкой компонента RadioGroupl.

Процедура TForm1. FormClose закрывает файл базы данных поскольку тип TMedal используется двумя процедурами(TForm1.FormActivate и TForm1.Button1Сlick), то его описание помещено в раздел type модуля формы. Объявление файловой переменной f по этой же причине помещено в раздел объявления переменных модуля формы.

В приведенном варианте программы предполагается, что списки стран и названий видов спорта формируются при помощи редактора списка строк во время разработки формы. Вместе с тем, список можно сформировать во время разработки программы. Для этого надо к свойству items применить метод Add. Например, список стран может быть сформирован при помощи следующих инструкций (их нужно поместить в процедуру Tform1.FormActivate):

Form1.ComboBox1.Item.Add('Россия');

Form1.ComboBox1.Item.Add('Австрия');

Form1.ComboBox1.Item.Add('Германия');

Form1.ComboBox1.Item.Add('Франция');

Рассмотрим программу, демонстрирующую процесс чтения и обработки записей файла. Программа Чтение записей из файла, диалоговое окно которой представлено на рис. 78, а текст — в листинге 26, открывает файл, сформированный программой Добавление записи в файл, и, в зависимости от того, какой из переключателей все или выбрать — установлен, выводит список медалей, выигранных соответственно представителями всех стран или страны, название которой введено в поле Страна. Для вывода результата чтения из файла используется компонент Memol.

В табл. 11. приведены значения свойств компонентов формы.

Так как компонент Memol предназначен только для просмотра информации, то свойству Readonly (только чтение, просмотр) присвоено значение True. Свойство scroiiBars (полосы прокрутки) компонента Memo позволяет задавать отображаемые полосы прокрутки. По умолчанию свойству scroiiBars присвоено значение ssNone, т. е. полосы прокрутки не отображаются. В рассматриваемом примере выводится вертикальная полоса, поэтому свойству ScroiiBars присвоено значение ssVertical.

Таблица 11. Значения свойств компонентов

       
  Свойство Значение  
  RadioButton1. Checked True  
  Label1.Enabled False  
  ComboBox1. Enabled False  
  Memo1. Readonly True  
  Memo1. ScroiiBars ssVertical  
       

Для ввода названия страны используется компонент ComboBox1, что позволяет задавать имя не только прямым вводом названия, но и выбором из списка. Список стран нужно сформировать во время создания формы путем присвоения значения свойству items.

Чтобы сразу после запуска программы список выбора страны был недоступен (т. к. выбран переключатель все группы Показать), свойству Enabled компонентов ComboBox1 и Label1 во время создания формы нужно присвоить значение False.

Список ввода-выбора названия страны (ComboBox1) становится доступным в результате выбора во время работы программы переключателя выбрать. Процедура обработки события Onclick на переключателе RadioButton2 делает доступным поле ComboBox1.

Рис. 78. Окно программы Чтение записей из файла




Поделиться с друзьями:


Дата добавления: 2014-12-25; Просмотров: 460; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.