Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задачи_Делфи.docx
Скачиваний:
9
Добавлен:
14.08.2019
Размер:
1.17 Mб
Скачать

8.1.1. Просмотр текстовых файлов

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

Рис. 46. Программа «Просмотр текстовых файлов»

Реализация. На пустую форму поместите компоненты TOpenDialog, TButton и редактор TMemo, в котором будем просматривать текстовой файл. При работе программы щелчок по кнопке будет сигналом о необходимости загрузить в редактор новый файл.

Свойство FileName содержит маршрут поиска и имя выбранного файла при успешном завершении диалога. В случае неуспеха, чтобы избежать краха программы, можно проверить существование файла глобальной функцией FileExists.

С помощью свойста Filter можно произвести отбор файлов для показа. При программном вводе фильтры задаются одной длинной строкой, в которой символ « | » служит для разделения фильтров друг от друга, а также для разделения описания фильтруемых файлов от соответствующей маски выбора. Например, оператор

OpenDialog1.Filter := ‘Текстовые файлы | *.txt |'+' Файлы Паскаля | *.pas ’;

задает две маски – для отбора файлов с расширениями pas и txt.

Ниже приведен обработчик события OnClick кнопки Button1:

procedure TForm1.Button1Click(Sender: TObject);

var s : string;

f : TextFile;

begin

// Настраиваем диалог на просмотр текстовых файлов

OpenDialog1.Filter:='|Текстовые файлы| *.txt|'+

'Файлы Паскаля|*.pas';

// Выполняем диалог и анализируем его результат

if OpenDialog1.Execute and FileExists(OpenDialog1.FileName) then

begin

// Открываем файл

AssignFile(f,OpenDialog1.FileName);

Reset(f);

// Очищаем редактор и наполняем его

Memo1.Lines.Clear;

while not eof(f) do

begin

Readln(f,s);

Memo1.Lines.Add(s);

end;

CloseFile(f);

end;

end;

Задание. С помощью диалога TOpenPictureDialog создайте проект для просмотра графических файлов с расширением bmp. Включите панель для предварительного просмотра выбираемого файла.

8.2. Добавление и удаление записей в файл и из файла

8.2.1. Проект «Журнал группы»

Постановка задачи. В данном проекте составляется список студентов с возможностью его пополнения. Демонстрирует процесс добавления записи в файл, использование компонентов TComboBox и TRadioGroup (рис. 47).

Рис. 47. Проект «Журнал»

Реализация. Сначала создадим тип TStud для описания одной записи о студенте:

type TStud=record

fio: string[100]; // Фамилия, имя, отчество студента

group: string[20]; // группа

faculty: string[40]; // факультет

pol: string[10]; // пол

end;

Для записи фамилии используем компонент TEdit, для выбора группы и факультета – компоненты TComboBox. Для указания пола – компонент TRadioGroup. После того как все поля будут заполнены, надо записать эту запись в конец файла, если он существует, иначе создать новый файл.

var f: file of TStud; // Файл записей

stud: TStud;

// Щелчок на кнопке «Добавить»

procedure TForm1.Button1Click(Sender: TObject);

begin

with stud do

begin

fio := Edit1.Text;

group := ComboBox1.Text;

faculty := ComboBox2.Text;

case RadioGroup1.ItemIndex of

0: pol := 'Мужской';

1: pol := 'Женский';

end;

end;

AssignFile(f, 'student');

if not FileExists('student') then

begin

Rewrite(f); // Открыть файл для записи, т. е. создать

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

end

else

begin

Reset(f); // Файл существует

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

write(f, stud);

end;

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

end;

// Щелчок на кнопке «Просмотреть файл»

procedure TForm1.Button2Click(Sender: TObject);

var s:string;

begin

Memo1.Clear;

AssignFile(f, 'student');

Reset(f); // Открыть файл для чтения

while not eof(f) do

begin

Read(f,stud); // Прочитать одну запись

s:= stud.fio+' '+stud.group+' '+ stud.faculty+' '+ stud.pol;

Memo1.Lines.Add(s);

end;

end;

Задание. Создайте запись об игроке: имя, время игры, очки. Сделайте таблицу рекордов.