"Delphi. Учимся на примерах" - читать интересную книгу автора (Парижский Сергей Михайлович)

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

Полный код модуля программы Работа с файлами представлен в листинге 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 lt;gt; 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.

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