Delphi. Учимся на примерах [Сергей Михайлович Парижский] (fb2) читать постранично, страница - 2


 [Настройки текста]  [Cбросить фильтры]

отображаются в стиле Windows XP

Введите в поле какой-либо текст и нажмите кнопку — должно появиться информационное окно, которое также будет отображаться в стиле Windows XP (рис. 1.2). При этом, размер exe-файла увеличился всего лишь на несколько сотен байт.

Рис. 1.2. Информационное окно также отображается в стиле Windows XP

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

Глава 2 Работа с файлами

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

Разработать программу для работы с файлами. Программа должна предоставлять стандартные функции, используемые при работе с файлами: копирование, перенос, удаление.

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

Создайте новый проект Delphi. Первым делом разработаем интерфейс программы. Изменим некоторые свойства главной формы. Прежде всего, присвойте соответствующее значение свойству Caption (заголовок формы) — например, Работа с файлами. Поскольку окно нашей программы должно всегда находиться поверх всех остальных окон, следует присвоить свойству FormStyle значение fsStayOnTop. Больше никаких свойств формы изменять не будем.

Разместите в левом верхнем углу формы, один над другим два компонента Label (метка) категории Standard. Для верхней метки присвойте свойству Caption значение Что:, а для второй — Куда:. Рядом с метками разместите по одному компоненту Edit (поле ввода) категории Standard. Присвойте свойству Name (имя) верхнего поля значение from, а свойству Name нижнего — значение where. Свойствам from.Text и where.Text присвойте пути по умолчанию, например: c:\1.txt и d:\2.txt.

Для того чтобы не утруждать пользователя копированием или ручным вводом путей размещения файлов, воспользуемся стандартными диалоговыми окнами открытия и сохранения файлов. Диалоговом окну открытия файла соответствует компонент OpenDialog категории Dialogs, а диалоговому окну сохранения — компонент SaveDialog той же категории. Разместим эти компоненты на форме. Для удобства изменим значение свойства OpenDialog1.Name на Open1, а значение свойства SaveDialog1.Name на Save1.

Справа от полей from и where разместим кнопки вызова диалогового окна обзора (компоненты Button категории Standard). Свойству Caption этих кнопок присвойте значение Обзор или просто поставьте точки. При желании, можете изменить размеры кнопок.

Разместите на форме под полем where компонент Label категории Standard и присвойте его свойству Caption значение Размер файла:. Справа от этой метки разместите еще один компонент Label, очистив для нее свойство Caption — эта метка будет отображать размер обрабатываемого файла.

Ниже разместим две кнопки (компоненты Button), присвоим их свойствам Caption значения Копировать и Вырезать. Под этими кнопками разместим компоненты, которые будут использоваться для выбора и удаления файлов: компонент Edit для ввода пути к файлу, кнопка вызова диалогового окна обзора и кнопка для удаления файла.

Свойству Edit1.Name присвоим значение Del, а свойству Text – путь по умолчанию. Кнопку Обзор разместим справа, а кнопку Удалить файл — под полем Del.

Полученная форма должна соответствовать рис. 2.1.

Рис. 2.1. Форма Работа с файлами

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

Разработаем процедуру копирования файла. Это можно было бы реализовать средствами WinAPI, однако в этом случае процедура, хотя и была бы менее громоздкой, оказалась бы "привязанной" к системе, что для программ нежелательно, поэтому лучше воспользоваться библиотеками Delphi.

Для начала объявим нашу процедуру (назовем ее doit) как закрытый член класса формы:

type

TForm1 = class(TForm)

 ...

private

 { Private declarations }

 procedure doit;

 public

 { Public declarations }

end;

Реализацию процедуры создадим в разделе implementation:

Примечание

Здесь и далее при разработке описанных в книге программ комментарии, при желании, можно не вводить. Текст, обязательный для ввода, выделен в листингах полужирным шрифтом.

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 //Пока не достигнут конец первого файла