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
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