Сергей Парижский - Delphi. Учимся на примерах

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.
Жалоба
Напишите нам, и мы в срочном порядке примем меры.
Описание книги "Delphi. Учимся на примерах"
Описание и краткое содержание "Delphi. Учимся на примерах" читать бесплатно онлайн.
Данная книга — продолжение предыдущей книги автора, "Delphi. Только практика". Также как и в "Delphi. Только практика", в данном издании подробно рассмотрены программы для сетей, различные шуточные программы, простые игрушки, некоторые полезные приложения, разработка приложений в стиле Windows XP. В частности, здесь можно найти такие примеры как бесплатная отправка SMS, FTP-клиент, простое шифрование, CGI-сценарии и многое другое. Описаны методы работы с системным реестром Windows и INI-файлами, а также некоторые важные аспекты программирования на системном уровне с применением функций Windows API. Для облегчения понимания программ каждый пример содержит комментарии сложных строк кода.
Книга ориентирована как на тех, кто уже имеет опыт создания приложений в Delphi, так и на начинающих программистов. Для начинающих пользователей Delphi в конце книги добавлено приложение с описанием синтаксиса языка программирования Object Pascal.
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 //Пока не достигнут конец первого файла
//Считываем один байт из первого файла
BlockRead(fl, 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;
⇘ Различные конструкции языка Object Pascal (комментарии, операторы ветвления, обработка исключений и др.) рассматриваются в приложении Г.
Эта процедура будет использоваться при копировании и переносе файлов. Сначала мы открываем файлы, которые выбрал пользователь, а затем проверяем, не было ли ошибок при их открытии. Если ошибок не было, то отображаем пользователю размер исходного файла и начинаем считывать байты из первого файла, записывая их во второй. Если копирование завершено и ошибок при этом не произошло, то отображаем сообщение об успешном окончании копирования.
Процедура doit вызывается при нажатии кнопки Копировать:
procedure TForm1.Button1Click{Sender: TObject);
begin
doit;
end;
По нажатию кнопки Вырезать должно происходить обычное копирование с последующим удалением скопированного файла:
procedure TForm1.Button5Click(Sender: TObject);
begin
doit;//копируем
DeleteFile(from.Text); //удаляем исходный файл
end;
Теперь создадим процедуры выбора и сохранения файла с помощью стандартных диалоговых окон. Для выбора первого (исходного) файла следует создать следующий обработчик события OnClick (кнопке Button2 соответствует поле from):
procedure TForm1.Button2Click(Sender: TObject);
begin
if Open1.Execute
then from.Text:= Open1.FileName
else ShowMessage('Файл не был открыт');
end;
При нажатии кнопки Обзор открывается диалоговое окно выбора файла (Open1.Execute). Если в этом окне пользователь нажал кнопку Отмена (Open1.Execute = False), то сообщаем ему об этом и не выполняем никаких действий. Если пользователь выбрал файл, то копируем путь к нему в соответствующее поле ввода.
Создадим аналогичный обработчик события для выбора пути назначения при копировании первого файла (кнопке Button3 соответствует поле where):
procedure TForm1.Button3Click(Sender : TObject);
begin
if Save1.Execute
then where.Text:= Save1.FileName
else ShowMessage('Вы не выбрали место длясохранения файла!');
end;
Здесь выполняется та же проверка, что и в предыдущем случае. Затем выбранный путь заносится в соответствующее поле ввода, чтобы его, при желании, можно было откорректировать.
Теперь создадим аналогичный обработчик события 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;
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
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!
Похожие книги на "Delphi. Учимся на примерах"
Книги похожие на "Delphi. Учимся на примерах" читать онлайн или скачать бесплатно полные версии.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Отзывы о "Сергей Парижский - Delphi. Учимся на примерах"
Отзывы читателей о книге "Delphi. Учимся на примерах", комментарии и мнения людей о произведении.