Литвек - электронная библиотека >> Сергей Михайлович Парижский >> Программирование: прочее и др. >> Delphi. Учимся на примерах >> страница 3
диске после выполнения операции удаления. Если его не существует, то выводим сообщение об успешном удалении файла. Теперь можно откомпилировать и запустить программу на выполнение. Внешний вид окна Работа с файлами в действии показан на рис. 2.2.

Delphi. Учимся на примерах. Иллюстрация № 4 Рис. 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) + 'Кб’;

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

  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.

Таблица 3.1. Свойства компонентаLabel, размещенного на форме Статистика

Свойство Значение Пояснение Caption Статистика Надпись метки Font.Color clRed Цвет надписи — красный Font.Name Courier New Шрифт надписи Font.Size 16 Размер шрифта надписи Font.Style [fsBold] Стиль шрифта — полужирный Left 128 Отступ слева Top 3 Отступ сверху Ниже разместите компонент Edit категории Standard (поле ввода), в котором будет храниться путь к обрабатываемому файлу. Справа от него разместим кнопку (компонент Button категории Standard), которая будет открывать окно обзора для выбора файла. Присвойте свойству Button1.Caption значение Обзор.

Для реализации выбора файла разместите на форме компонент OpenDialog категории Dialogs. Измените значение свойства Name этого компонента наOpen1.

Разместите на форме четыре компонента Label и присвойте их свойству Caption значения Слов, Символов, Пробелов и Строк. Расположите эти метки одну над другой вдоль левого края формы и установите свойства шрифта согласно табл. 3.2.

Таблица 3.2. Свойства шрифта компонентов Label

Свойство Значение Пояснение Font.Name Courier New Шрифт надписи Font.Size 12 Размер шрифта надписи Font.Style [fsBold] Стиль шрифта — полужирный Разместите на форме справа от каждого предыдущих четырех меток еще четыре компонента Label и присвойте им имена (свойство Name) words, symbols, spaces и lines. Присвойте значения свойствам этих меток согласно табл. 3.3.

Таблица 3.3. Свойства компонентов words, symbols, spaces и lines

Свойство Значение Пояснение Caption 0 Надпись метки Font.Color clRed Цвет надписи — красный Font.Name Courier New Шрифт надписи Font.Size 12 Размер шрифта надписи Font.Style [fsBold] Стиль шрифта — полужирный Left 112 Отступ слева В правом нижнем углу формы разметим кнопку (компонент Button), по нажатию которой будут выполняться расчёты и выводиться все данные. Свойству Caption этой кнопки присвоим значение Статистика. На этом разработка формы завершена. Полученный результат должен примерно соответствовать рис. 3.1

Delphi. Учимся на примерах. Иллюстрация № 5 Рис. 3.1. Форма Статистика

Разработка программного кода

В этой программе следует обработать только два события: нажатие кнопки Обзор и нажатие кнопки Статистика. Сначала — о кнопке Обзор:

procedure TForm1.Button1Click(Sender: TObject);

begin

 //начинаем обзор с текущей папки