Рис. 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 значение Обзор.
Читать дальше