Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
{ Copyright © 1999 by Delphi 5 Developer's Guide - Xavier Pacheco and Steve Teixeira } unitMainFrm; interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Gauges; type
TMainForm = class
(TForm) prbCopy: TProgressBar; btnCopy: TButton; procedure
btnCopyClick(Sender: TObject); end
; var
MainForm: TMainForm; implementation
{$R *.DFM} procedure
TMainForm.btnCopyClick(Sender: TObject); var
SrcFile, DestFile: file
; BytesRead, BytesWritten, TotalRead: Integer; Buffer: array
[1..500] of
byte; FSize: Integer; begin
{ Assign both the source and destination files to their respective file variables } AssignFile(SrcFile, 'srcfile.tst'); AssignFile(DestFile, 'destfile.tst'); // Open the source file for read access. Reset(SrcFile, 1); try
// Open destination file for write access. Rewrite(DestFile, 1); try
{ Encapsulate this into a try..except so that we can erase the file if an error occurs. } try
// Initialize total bytes read to zero. TotalRead := 0; // Obtain the filesize of the source file FSize := FileSize(SrcFile); { Read SizeOf(Buffer) bytes from the source file and add these bytes to the destination file. Repeat this process until all bytes have been read from the source file. A progress bar is provided to show the progress of the copy operation. } repeat
BlockRead(SrcFile, Buffer, SizeOf(Buffer), BytesRead); if
BytesRead > 0 then
begin
BlockWrite(DestFile, Buffer, BytesRead, BytesWritten); if
BytesRead <> BytesWritten then
raise
Exception.Create('Error copying file') else
begin
TotalRead := TotalRead + BytesRead; prbCopy.Position := Trunc(TotalRead / Fsize) * 100; prbCopy.Update; end
; end
until
BytesRead = 0; except
{ On an exception, erase the destination file as it may be corrupt. Then re-raise the exception. } Erase(DestFile); raise
; end
; finally
CloseFile(DestFile); // Close the destination file. end
; finally
CloseFile(SrcFile); // Close the source file. end
; end
; end
.