Читать «Delphi. Учимся на примерах» онлайн - страница 5
Сергей Михайлович Парижский
Создадим аналогичный обработчик события для выбора пути назначения при копировании первого файла (кнопке 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;
type TForm1 = class(TForm)
from: TEdit;
where: TEdit;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button2: TButton;
Button3: TButton;
Open1: TOpenDialog;
Save1: TSaveDialog;
Button4: TButton;
del: TEdit;
Button5: TButton;
Button6: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
private
{ Private declarations }
procedure doit; //объявление процедуры doit
public
{ Public declarations }
end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure Tform1.doit();
var
f1, f2: file of byte; //работа с первым и вторым файлом
сор: byte; //для побайтового копирования
sizez: longint; //хранит размер файла
begin
{I-} {отключаем директиву, которая следит за ошибками ввода/вывода}
try
//связываем Файловую переменную f1 с первым файлом
AssignFile(f1, from.Text);
//связываем файловую переменную f2 со вторым файлом
AssignFile(f2, where.Text);
Reset(f1); //открываем первый файл на чтение
sizez:= Trunc(FileSize(f1)); //узнаем размер файла
//Отображаем размер файл для пользователя}
Label4.Caption:= IntToStr(sizez div 1024) + 'Кб’;
{Создаем второй файл или перезаписываем его, если он уже существует}