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

ЖАНРЫ

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

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

Шрифт:

⇘ Различные конструкции языка 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;

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; //работа с первым и вторым файлом

Поделиться с друзьями: