Выбрать главу

Теперь создадим аналогичный обработчик события 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;

 declass="underline" 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) + 'Кб’;

  {Создаем второй файл или перезаписываем его, если он уже существует}

  Rewrite(f2);

  while not Eof(f1) do begin //пока не достигнут конец первого файла

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

   BlockRead(f1, 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;

procedure TForm1.ButtonlClick(Sender: TObject);

begin

 doit;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

 if Open1.Execute then from.Text := Open1.FileName

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

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

 if Save1.Execute then where.Text:= Save1.FileName

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

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

 doit;

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

end;

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;

end.

⊚ Все файлы проекта и исполняемый файл рассмотренной программы находятся на прилагаемом к книге компакт-диске в папке Chapter_02.

Глава 3

Работа с текстом. Статистика документа

Постановка задачи

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

Разработка формы

Создадим новый проект Delphi и разработаем интерфейс программы. Измените значение свойства Caption главной формы на Статистика. Разместите на форме компонент Label категории Standard, и присвойте его свойствам значения согласно табл. 3.1.