Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_указания_к_раб_7_8.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
537.94 Кб
Скачать

Методические указания к работам 7 и 8

5. Работа с файлами

В Delphi поддерживаются все операции с файлами  создание, поиск, чтение и запись, переименование как файлов, так и каталогов. В Delphi существует несколько способов работы с файлами.

Пример 5.1. Разработать программу, которая позволяет увидеть и, в случае необходимости, изменить содержимое текстового файла.

На форму необходимо поместить компоненты: Memo1, две кнопки Button, кнопку ButBtn1 и OpenDialog1 из палитры Dialogs (рис. 17).

Рис. 17

В разделе Implementation необходимо описать файловую переменную и переменную типа String – имя файла.

Var f:Textfile; fname:String;

Procedure TForm1.Button1Click(Sender: TObject); // кнопка Открыть

Var buf: string; // буфер для чтения строк

Begin

If OpenDialog1.Execute then

Begin

Memo1.Clear;

fname:= OpenDialog1.FileName;

Assignfile(f,fname); //связываем файловую переменную f и файл с именем fname

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

While Not Eof(f) do //пока не конец файла

Begin

Readln(f,buf); //прочитать строку из файла

Memo1.Lines.Add(buf); //добавить строку в поле Memo1

End;

Closefile(f);

End

Else

Begin

ShowMessage('Ошибка доступа к файлу'); Exit

End;

End;

Delphi диалоги выбора файла сами по себе ничего не делают, а только предоставляют настройки, сделанные пользователем при выборе файла. Самый важный метод Delphi диалогов  Execute, который создает и показывает на экране диалоговое окно. Это окно является модальным, поэтому сразу после обращения к методу Execute дальнейшее выполнение программы приостанавливается до тех пор, пока пользователь не закроет окно. Поскольку Execute – логическая функция, она возвращает значение True, если результат диалога с пользователем был успешным.

В результате выбора файла свойство FileName компонента OpenDialog получает значение полного имени выбранного файла, которое и используется в процедуре Assignfile.

В диалоговом окне Открыть приходится выбирать из всех файлов в нужном каталоге. Удобнее видеть только, например, текстовые файлы, или другой тип файлов по нашему выбору. Для этого используется свойство Filter компонента OpenDialog1. Это свойство можно установить с помощью специального редактора на этапе конструирования формы или программно. Для доступа к редактору достаточно щелкнуть на кнопке … в строке свойства Filter окна Инспектора объектов (рис. 18).

Рис. 18

В колонке FilterName записываются имена фильтров, в колонке Filter  список масок файлов, разделённых точкой с запятой. Маска файла в данном случае выглядит как

*.расширение_файла

Звёздочка означает, что выбираются файлы с любыми именами, подходящие по расширению.

При программном вводе фильтры задаются одной длинной строкой, в которой символы вертикальной черты | служат для разделения фильтров, а также для отделения описания фильтруемых файлов от соответствующей маски выбора. Например, следующий оператор задает две маски для отбора файлов с расширениями txt и pas:

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

Свойство InitialDir позволяет в момент открытия диалогового окна Открыть оказаться в нужной папке. Оно доступно как на этапе конструирования, так и программно:

OpenDialog1.InitialDir:= 'С:\Программирование';

Для сохранения содержимого компонента Memo1 после редактирования в том же файле надо записать следующую процедуру:

procedure TForm1.Button2Click(Sender: TObject); // Кнопка Сохранить

Var i:integer;

Begin

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

For i:= 0 to Memo1.Lines.Count do //строки в поле Memo1 пронумерованы с нуля

Writeln(f,Memo1.Lines[i]);

Closefile(f); //закрытие файла

ShowMessage('Данные записаны в файл');

end;

Если мы хотим содержимое компонента Memo1 сохранить в файле с другим именем, то надо на форму добавить еще одну кнопку Button (Сохранить как) и компонент SaveDialog1 (палитра Dialogs). Обработчик события для кнопки Сохранить как можно записать так:

Procedure TForm1.Button3Click(Sender: TObject);

Var t:Textfile; newname:String; i:Integer;

Begin

If Savedialog1.Execute Then

Begin

newname:= Savedialog1.filename;

Assignfile(t,newname);

Rewrite(t);

For I := 0 to Memo1.Lines.Count do

Writeln(t,Memo1.Lines[i]);

Closefile(t);

End

Else

Begin

ShowMessage('Ошибка доступа к файлу'); Exit

End;

End;

Как было сказано выше, существуют и другие способы чтения информации из файла и записи информации в файл.

Пример 5.2. Разработать программу текстового редактора, позволяющего работать с файлами: создавать новые, сохранять, открывать имеющиеся в памяти компьютера; а также редактировать документы: вырезать, вставлять и копировать текстовые фрагменты (рис. 19).

На форму необходимо поместить компоненты Memo, Edit и MainMenu (палитра Standard). Компонент MainMenu имеет вид:

Рис. 19

Далее надо задать обработчик события на создание формы, в котором будет очищаться содержимое компонента Memo:

Procedure TForm1.FormCreate(Sender: TObject);

Begin

Memo1.Clear;

End;

Для создания меню необходимо щелкнуть дважды на компоненте MainMenu на форме. В появившемся редакторе главного меню можно задать его пункты и обработчики событий по выбору (щелчок) одного из пунктов.

В строку главного меню (свойство Caption) надо внести следующие пункты Файл, Редактирование, О программе.

Пункты Файл и Редактирование должны содержать вложенное меню следующей структуры (табл. 17):

Таблица 17

Для того чтобы запроектировать обработчики события необходимо войти в редактор главного меню и выбрать пункт О программе и дважды щелкнуть на нем мышкой (или в окне Инспектора объектов выбрать событие OnClick). В окно редактора кода с заготовкой обработчика события можно внести следующий код:

ShowMessage('Program is redact only files with extentions *.txt')

Аналогично можно создать обработчики событий со следующими кодами (табл 18):

Таблица 18

Событие щелчка по пункту…

Процедура обработчика

Файл \ Новый

Procedure TForm1.N4Click(Sender: TObject);

begin

AssignFile(f,'C:\newfile.txt');

Rewrite(f);

Closefile(f);

end;

(Переменная f должна быть описана как TextFile)

Эта команда создает пустой файл и дает возможность пользователю набрать нужный текст в поле Memo1

Файл \ Открыть

Procedure TForm1.N5Click(Sender: TObject);

Begin

Memo1.Lines.LoadfromFile('C:\newfile.txt');

End;

Файл \ Сохранить

procedure TForm1.N6Click(Sender: TObject);

Begin

Memo1.Lines.SaveToFile('C:\newfile.txt');

End;

Файл \ Сохранить как

Procedure TForm1.N7Click(Sender: TObject);

Var filename:String;

Begin

filename:=Edit1.Text;

Memo1.Lines.SaveToFile(filename);

End;

Файл\Выход

Procedure TForm1.N8Click(Sender: TObject);

Begin

Close;

End;

Редактирование \ Копировать

Procedure TForm1.N9Click(Sender: TObject);

Begin

Memo1.CopyToClipboard;

End;

Редактирование \ Вырезать

Procedure TForm1.N10Click(Sender: TObject);

Begin

Memo1.CutToClipboard;

End;

Редактирование \ Вставить

Procedure TForm1.N11Click(Sender: TObject);

Begin

Memo1.PastefromClipboard;

End;

Редактирование \ Выделить все

Procedure Tform1.N12Click(Sender: Tobject);

Begin

Memo1.Selectall;

End;

Компонент Edit1 нужен для ввода полного имени, под которым будет сохранен файл при использовании команды Сохранить как.