Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы по курсу Delphi.doc
Скачиваний:
11
Добавлен:
15.11.2019
Размер:
1.81 Mб
Скачать

Пример составления программы

Рассмотрим пример программы с использованием этих компонент.

Пример 4.1. Открыть файл, содержащий данные, считать их и сохранить в файл с другим именем.

Для создания программы нам понадобятся компоненты OpenDialog, SaveDialog, а также три компонента типа ButtonButton1, Button2 и Button3.

Последние необходимы для организации действий чтения данных, сохранения данных и завершения работы.

Важным свойством компонент OpenDialog и SaveDialog является свойство Filter. Оно позволяет определить, файлы какого типа (т.е. с каким расширением) можно выбирать для открытия (сохранения). Заполняется оно следующим образом – необходимо подвести курсор к свойству Filter в Object Inspector и щелкнуть левой кнопкой мыши, а затем навести курсор на появившуюся кнопку с многоточием и повторно щелкнуть левой кнопкой мыши. На экране появится следующее окно (см. рис. 4.1):

Рис.4.1. Окно заполнения поля Filter

Окно имеет две колонки – Filter Name и Filter. В первой колонке пишется пояснительный текст, во второй – тип файлов, которые можно будет выбирать для открытия/сохранения. Фильтр, изображенный на рис.4.1, будет настроен на открытие/сохранения файлов с расширением «inp».

Кнопки Button1, Button2 и Button3 будем использовать для чтения данных, записи данных и выхода из программы соответственно. Примерное расположение компонент на форме показано на рис. 4.2

Рис. 4.2 Пример расположения компонент на форме

При написании процедур обработки данных нами будут использоваться следующие свойства компонентов OpenDialog и SaveDialogFileName и FilterIndex. Первое содержит в себе имя файла и путь к нему, второе – номер фильтра, который выбран. Ниже приведен текст процедуры TForm1.Button1Click, которая обеспечивает открытие файла, имя которого выбрано с использованием компонента OpenDialog, а также чтение данных из этого файла в массив.

procedure TForm1.Button1Click(Sender: TObject);

Var ff:TextFile;

Begin

If OpenDialog1.Execute then

begin

AssignFile(ff,OpenDialog1.FileName);

Reset(ff);

i:=0;

while not eof(ff) do

begin

i:=i+1;

Readln(ff,a[1,i],a[2,i]);

end;

CloseFile(ff);

Button2.Enabled:=true;

end

else Exit;

end;

Для записи данных в файл, имя которого будет задано с помощью компонента SaveDialog, предназначена процедура TForm1.Button2Click

procedure TForm1.Button2Click(Sender: TObject);

Var ff:TextFile;

k:integer;

Begin

if SaveDialog1.Execute then

begin

if SaveDialog1.FilterIndex=1 then

SaveDialog1.FileName:=SaveDialog1.FileName+'.inp';

AssignFile(ff,SaveDialog1.FileName);

ReWrite(ff);

for k:=1 to i do

Writeln(ff,a[1,k],' ',a[2,k]);

CloseFile(ff);

end

else Exit;

end;

Так как свойство FileName компонента SaveDialog возвращает только имя файла, для добавления его расширения в процедуре TForm1.Button2Click используется свойство FilterIndex. Оно показывает порядковый номер фильтра, который выбрал пользователь при сохранении файла, и тем самым однозначно определяет, какое именно расширение необходимо добавить к имени файла.

Запущенная программа имеет окно, показанное на рис.4.3.

Рис. 4.3. Окно программы после запуска

При составление программы нужно учитывать следующее условие – сохранять данные в файл нельзя до тех пор, пока они не будут прочитаны из другого файла. Для этого кнопку записи в файл сразу же после запуска программы делают неактивной, используя свойство Enabled. В процедуре TForm1.FormActivate, которая выполняется автоматически сразу после запуска программы, пишут следующую строку:

Button2.Enabled:=false;

и активной кнопка сохранения в файл становится только после нажатия кнопки «Открыть файл» (см. рис.4.4).

Рис. 4.4. Окно программы после нажатия кнопки «Открыть файл»

Результатом работы программы будет файл с именем, который задал пользователь.