Чтение онлайн

на главную - закладки

Жанры

Delphi. Учимся на примерах

Парижский Сергей Михайлович

Шрифт:

BlockRead(fl, cop, 1);

//Записываем один байт во второй файл

BlockWrite(f2, cop, 1);

end;

CloseFile(f1); //Закрываем первый файл

CloseFile(f2); //Закрываем второй файл

 finally;

 end;//Конец блока обработки
исключений

 if IOResult<> 0 //Если возникла ошибка ввода-вывода

 then MessageDlg('Ошибка при копировании файла!', mtError, [mbOk],0) //сообщение об ошибке

 else begin

{Если ошибок не было, то выводим окно об успешном окончании копирования}

ShowMessage('Успешно скопировано!');

 end;

end;

⇘ Различные конструкции языка Object Pascal (комментарии, операторы ветвления, обработка исключений и др.) рассматриваются в приложении Г.

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

Процедура doit вызывается при нажатии кнопки Копировать:

procedure TForm1.Button1Click{Sender: TObject);

begin

 doit;

end;

По нажатию кнопки Вырезать должно происходить обычное копирование с последующим удалением скопированного файла:

procedure TForm1.Button5Click(Sender: TObject);

begin

 doit;//копируем

 DeleteFile(from.Text); //удаляем исходный файл

end;

Теперь создадим процедуры выбора и сохранения файла с помощью стандартных диалоговых окон. Для выбора первого (исходного) файла следует создать следующий обработчик события OnClick (кнопке Button2 соответствует поле from):

procedure TForm1.Button2Click(Sender: TObject);

begin

 if Open1.Execute

 then from.Text:= Open1.FileName

 else ShowMessage('Файл не был открыт');

end;

При нажатии кнопки Обзор открывается диалоговое окно выбора файла (Open1.Execute). Если в этом окне пользователь нажал кнопку Отмена (Open1.Execute = False),

то сообщаем ему об этом и не выполняем никаких действий. Если пользователь выбрал файл, то копируем путь к нему в соответствующее поле ввода.

Создадим аналогичный обработчик события для выбора пути назначения при копировании первого файла (кнопке Button3 соответствует поле where):

procedure TForm1.Button3Click(Sender : TObject);

begin

 if Save1.Execute

 then where.Text:= Save1.FileName

 else ShowMessage('Вы не выбрали место длясохранения файла!');

end;

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

Теперь создадим аналогичный обработчик события OnClick для кнопки Обзор, используемой для выбора размещения удаляемого файла :

procedure TForm1.Button4Click(Sender: TObject);

begin

 if Open1.Execute

 then Del.Text:= Open1.FileName

 else ShowMessage('Файл не был открыт!');

end;

Сама кнопка Удалить выполняет при нажатии следующий код:

procedure TForm1.Button6Click(Sender: tobject);

begin

 DeleteFile(Del.Text); //удаляем файл

 if not FileExists(Del.Text)//проверяем существование файла

 then ShowMessage('Файл удален!'); //выводим сообщение

end;

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

Рис. 2.2. Программа Работа с файлами в действии

Полный исходный код модуля

Полный код модуля программы Работа с файлами представлен в листинге 2.1.

Листинг 2.1. Модуль программы Работа с файлами

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ShellAPI, Gauges;

Поделиться:
Популярные книги

Адвокат Империи 3

Карелин Сергей Витальевич
3. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Адвокат Империи 3

Кротовский, может, хватит?

Парсиев Дмитрий
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Кротовский, может, хватит?

Дурная жена неверного дракона

Ганова Алиса
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Дурная жена неверного дракона

Вонгозеро

Вагнер Яна
1. Вонгозеро
Детективы:
триллеры
9.19
рейтинг книги
Вонгозеро

Ведьма Вильхельма

Шёпот Светлана
Любовные романы:
любовно-фантастические романы
8.67
рейтинг книги
Ведьма Вильхельма

Папина дочка

Рам Янка
4. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Папина дочка

Законы Рода. Том 6

Flow Ascold
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 6

Как я строил магическую империю 7

Зубов Константин
7. Как я строил магическую империю
Фантастика:
попаданцы
постапокалипсис
аниме
фантастика: прочее
5.00
рейтинг книги
Как я строил магическую империю 7

Лучший из худший 3

Дашко Дмитрий
3. Лучший из худших
Фантастика:
городское фэнтези
попаданцы
аниме
6.00
рейтинг книги
Лучший из худший 3

Штурмовик из будущего 3

Политов Дмитрий Валерьевич
3. Небо в огне
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Штурмовик из будущего 3

Последний попаданец 2

Зубов Константин
2. Последний попаданец
Фантастика:
юмористическая фантастика
попаданцы
рпг
7.50
рейтинг книги
Последний попаданец 2

Идеальный мир для Лекаря 14

Сапфир Олег
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 14

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Вдова на выданье

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Вдова на выданье