Понедельник, 2017-10-23, 4:34 PM
Главная Форум Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум Энфа » Вопросы и решения » Delphi 7 » Копирование файла с диска на диск
Копирование файла с диска на диск
EnforcerДата: Пятница, 2010-05-14, 4:50 PM | Сообщение # 1
Энф
Группа: Администраторы
Сообщений: 534
Награды: 4
Репутация: 33
Статус: Нет меня
Данная функция позволит скопировать файл с одного места в другое.
Возможна индикация через ProgressBar или Gauge
Автора к сожалению не знаю.
Code
procedure FastFileCopy(const InfileName, OutFileName: string);
const
   BufSize = 3*4*4096; { 48Kbytes дает прекрасный результат }
type
   PBuffer = ^TBuffer;
   TBuffer = array [1..BufSize] of Byte;
var
   Size : integer;
   Buffer : PBuffer;
   infile, outfile : file;
   SizeDone, SizeFile: Longint;
begin
   if (InFileName <> OutFileName) then
   begin
     buffer := nil;
     AssignFile(infile, InFileName);
     System.Reset(infile, 1);
     try
       SizeFile := FileSize(infile);
       AssignFile(outfile, OutFileName);
       System.Rewrite(outfile, 1);
       try
         SizeDone := 0; New(Buffer);
         repeat
           BlockRead(infile, Buffer^, BufSize, Size);
   Inc(SizeDone, Size);
   FSyncContent.ProgressBar1.Max:= SizeFile;
   FSyncContent.ProgressBar1.Position:=SizeDone;
   Application.ProcessMessages;
           BlockWrite(outfile,Buffer^, Size)
     until
   Size < BufSize;
     FileSetDate(TFileRec(outfile).Handle,
     FileGetDate(TFileRec(infile).Handle));
       finally
         if Buffer <> nil then
           Dispose(Buffer);
         System.close(outfile)
       end;
     finally
       System.close(infile);
     end;
   end
   else
     raise EInOutError.Create('File cannot be copied into itself');
end;
 
Форум Энфа » Вопросы и решения » Delphi 7 » Копирование файла с диска на диск
Страница 1 из 11
Поиск:


Copyright ELForcer © 2017