Упражнения по обработке файлов (упр 5.)

Упражнение 5. Создайте приложение, которое открывает текстовый файл с использованием метода OpenDialog, считывает текст из него в объект Memo, затем сохраняет измененный текст в файле с использованием метода SaveDialog и выводит текст на печать, используя метод PrintDialog.

Создайте форму и разместите на ней компоненты Memo1, Button1, Button2 и Button3. Задайте для свойства Form1.Caption значение «Пример с OpenDialog, SaveDialog, PrintDialog», для Button1.Caption – «Открыть», для Button2.Caption – «Сохранить», для Button3.Caption – «Печатать». Удалите текст «Memo1» из окна Memo1. Для обеспечения возможности просмотра в окне Memo1 длинных текстов с использованием вертикальной полосы прокрутки установите для свойства Memo1.Scrollbars значение ssVertical. Выровняйте и зафиксируйте визуальные компоненты на форме. Выберите в палитре компонентов страницу Dialogs и поместите на форму компоненты OpenDialog, SaveDialog и PrintDialog. Так как они не являются визуальными компонентами, то их можно поместить в любое место формы. Задайте для свойства SaveDialogl.Title значение «Сохранить текстовый файл», а для OpenDialogl.Title – «Открыть текстовый файл». Эти текстовые строки будут отображаться в заголовках диалоговых окон сохранения и открытия файла.

Чтобы реализовать выбор типа файла при открытии файла в окне диалога, выберите в окне Инспектора объектов объект OpenDialog1, на странице Свойства произведите двойной щелчок по списку значений свойства Filter. В окне Filter Editor задайте фильтры для выбора типа и расширения файла.

Чтобы установить в качестве расширения файла по умолчанию первый вариант (*.txt), задайте для свойства OpenDialog1.Filterlndex значение 1. Отредактируйте фильтры SaveDialog1, как описано в предыдущем упражнении. Чтобы в диалоговом окне Печать включить возможность выбора диапазона печатаемых страниц и печати выделенного фрагмента, задайте для свойств PrintDialog1.Options.poPageNums и PrintDialog1.Options.poSelection значение True.

После этого раздел описания модулей будет выглядеть следующим образом:

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Printers;

Отредактируйте раздел описания переменных модуля следующим образом:

var
Form1: TForm1; {описание формы}
FName : string; {переменная, в которой хранится имя файла}
F: TextFile; {файловая переменная}
S: string; {переменная для хранения данных, прочитанных из файла}

Процедура обработчика щелчка мышью на кнопке Button2 (Сохранить) создается, как описано в предыдущем упражнении. Чтобы файл можно было сохранять с другим расширением, отредактируйте фрагмент, описывающий выбор типа файла, добавив строки удаления прежнего расширения файла:

case SaveDialog1.Fi1terlndex of {изменить расширение файла}
1 : if Copy(FName,Pos(‘.’,FName),4)<>’.txt’ then
begin
Delete(FName, Pos(‘.’,FName),4); {удалить расширение файла}
FName:=FName+’.txt’;
end;
3 : if Copy(FName,Pos(‘.’,FName),4)<>’.doc’ then
4 :
begin
Delete(FName, Pos(‘.’,FName),4);
FName:=FName+’.doc’;
end;
end;

Для создания процедуры обработчика щелчка мышью на кнопке Открыть выберите в окне Инспектора объектов объект Button1 и на странице События произведите двойной щелчок на пустом поле списка в событии OnClick. После этого в окне Редактора кода будет сгенерирована заготовка процедуры обработчика события procedure TForm1.Button1Click(Sender: TObject);

Отредактируйте текст процедуры следующим образом:

procedure TForm1.Button1Click(Sender: TObject): {открыть файл}
begin
if OpenDialog1.Execute then
begin
AssignFile(F, OpenDialog1.FileName); {выбор файла в диалоговом окне}
FName:OpenDialog1.FileName; {имя выбранного файла}
Reset(F); {открыть существующий файл}
Readln(F, S); {прочитать содержимое файла в переменную S}
Memo1.Text := S; {присвоить значение S свойству Text объекта Memol}
CloseFile(F);
end;
end;

Как видно из текста процедуры, в начале процедуры открывается диалоговое окно, в котором выбирается файл (FName:=OpenDialog1.FileName;), затем имя файла связывается с файловой переменной (AssignFile(F,OpenDialog1.FileName);), и файл открывается для чтения (Reset(F);). После этого содержимое открытого файла считывается в переменную S (Readln(F, S);) и присваивается свойству Text объекта Memo1 (Memo1.Text:= S;). После завершения чтения содержимого файл закрывается (CloseFile(F);).

Для создания процедуры обработчика щелчка мышью на кнопке Печатать выберите в окне Инспектора объектов объект Button3 и на странице События произведите двойной щелчок на пустом поле списка в событии OnClick. После этого в окне Редактора кода будет сгенерирована заготовка процедуры обработчика события procedure TForm1.Button3Click(Sender: TObject);, которую следует отредактировать следующим образом:

procedure TForm1.Button3Click(Sender: TObject);
begin
if PrintDialog1.Execute then
begin
AssignPrn(F); {объявить файловую переменную F — принтер}
Rewrite(F); {открыть доступ к принтеру}
Writeln(F,Memo1.Text); {вывести текст из Memol на принтер}
System.CloseFile(F); (закрыть доступ к принтеру}
end;
end;

Сохраните, откомпилируйте и запустите на выполнение созданное приложение. Щелкните мышью на кнопке Открыть, в диалоговом окне Открыть текстовый файл выберите папку, задайте тип файла и выберите текстовый файл, после чего нажмите кнопку Открыть. Отредактируйте текст в окне приложения и нажмите кнопку Сохранить. После этого в диалоговом окне Сохранить текстовый файл выберите в поле Тип файла расширение для сохраняемого файла, задайте

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