Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Работа с текстовыми файлами с помощью диалога
Delphi предоставляет нам возможность открывать любые файлы и работать с файлами по выбору. Delphi диалоги выбора файла позволяют указать программе, с каким файлом мы хотим работать.
На вкладке палитры компонентов Dialogs находятся компонент Delphi OpenDialog и компонент Delphi SaveDialog. Все Delphi диалоги, находящиеся на этой вкладке, в том числе и Delphi диалоги выбора файла, невизуальные, т.е. при переносе их на Форму в работающей программе их не видно, они видны только на этапе конструирования. Компонент Delphi OpenDialog позволяет открыть в нашей программе стандартное Windows-окно диалога открытия файла, компонент Delphi SaveDialog - окно диалога сохранения.
При работе этих фрагментов можно заметить, что выбирать приходится из всех файлов в нужной директории. Удобнее видеть только, например, текстовые файлы, или другой тип файлов по нашему выбору. Для этого используются фильтры, свойство Filter в наших компонентах. Настраивается оно в Инспекторе Объектов. При выборе его можно перейти в редактор фильтров:
*. расширение_файла; Звёздочка означает, что выбираются файлы с любыми именами, подходящие по расширению. |
Свойство Delphi диалогов Title позволяет записать в заголовок нужную нам фразу. Если оставить его пустым, то в заголовке будут стандартные "открыть" или "сохранить"
Свойство InitialDir позволяет в момент открытия оказаться в нужной нам директории. Оно доступно как на этапе "конструирования", так и программно.
Задания
Пример 1
Создать программу, которая с помощью диалога открывает файл и с помощью диалога сохраняет данные в файл:
Для начала, на форму нужно поместить компонент "SaveDialog". Свойству "DefaultExt" присвоить значение "TextFile"; Свойству "Фильтр" присвоить значение как на рисунке:
Для кнопки «Сохранить файл» набрать процедуру:
procedure TForm1.Button2Click(Sender: TObject);
var f:TextFile;
begin
If SaveDialog1.Execute then
begin
AssignFile(f,SaveDialog1.FileName);
Rewrite(f);
Writeln(f,'Ваши данные');
CloseFile(f);
end;
end;
На форму нужно поместить компонент "OpenDialog". Свойству "DefaultExt" присвоить значение "TextFile"; Свойству "Фильтр" присвоить значение как в предыдущем примере
Для кнопки «Открыть файл» набрать процедуру:
procedure TForm1.Button1Click(Sender: TObject);
var f:TextFile;
s:string;
begin
If OpenDialog1.Execute then
begin
AssignFile(f,OpenDialog1.FileName);
Reset(f);
Readln(f,s);
label1.Caption:=s;
memo1.Lines.Add(s);
CloseFile(f);
end;
end;
Самостоятельное задание
Вводить данные в Мемо и записывать их в файл при нажатии на кнопку «Сохранить файл».
Пример 2.
Итак, располагаем на Форме оба Delphi диалога, текстовый редактор Memo, и три кнопки Button. В свойство Caption одной из них записываем "Открыть...", другой - "Сохранить", третьей - "Сохранить как..."
В обработчике OnClick кнопки "Открыть..." пишем:
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
В результате выбора файла свойство FileName компонента OpenDialog получает значение полного адреса выбранного файла, который мы и вставляем в функцию загрузки файла компонента Memo.
Всё это хорошо, но только в данном случае, когда записанное выражение записывается в одну строку. Если программа использует несколько раз выражение OpenDialog1.FileName, то писать устанешь. В Delphi для такого случая есть так называемый "оператор присоединения" with. Он используется для любых объектов, имеющих длинный "хвост" из свойств, которые приходится записывать многократно. Вот как он записывается:
with Объект do
begin
end;
Свойства Объекта внутри логических скобок begin/end можно записывать непосредственно. Допускается перечислять через запятую несколько объектов. Естественно, в случае, когда внутри скобок находится один оператор, они необязательны. Перепишем фрагмент загрузки файла с использованием оператора присоединения:
with OpenDialog1, Memo1 do
if Execute then
Lines.LoadFromFile(FileName);
Запись получается более компактной.
Создаём обработчик нажатия кнопки "Сохранить как..." и пишем:
with SaveDialog1, Memo1 do
if Execute then
begin
Lines.SaveToFile(FileName);
OpenDialog1.FileName:=FileName; // Чтобы исправленный текст не затёр источник
end;
Наконец, для кнопки "Сохранить" пишем:
Memo1.Lines.SaveToFile(OpenDialog1.FileName); // Сохраняем туда, откуда считали