Приветствую Вас Гость | RSS

Delphi заготовки

Четверг, 16.05.2024, 06:58
Главная » 2012 » Июль » 27 » Копирование содержимого директории, вместе с поддиректориями.
10:08
Копирование содержимого директории, вместе с поддиректориями.

{ **** UBPFD *********** 
by Naumov Denis http://netsoftware.ucoz.ru  ***** >> Копирование содержимого директории, вместе с поддиректориями.
 
Функция копирует СОДЕРЖИМОЕ директории SourceDir в директорию TargetDir.
Копируются все файлы, подкаталоги, и файлы находящиеся в этих подкаталогах.
 
Аргумент StopIfNotAllCopied: если значение этого аргумента = True,
то при первой же ошибке копирования файла или папки, работы функции
прекратится а функция вернёт False. В случае если этот аргумент = False,
то ошибки копирования учитываться не будут.
 
Аргумент OverWriteFiles: если True, то существующие файлы будут переписаны.
 
Зависимости: SysUtils, FileCtrl, Windows
Автор:       VID, snap@iwt.ru , ICQ:132234868, Махачкала
Copyright:   VID
Дата:        31 января 2003 г.
***************************************************** }



function FullDirectoryCopy(SourceDir, TargetDir: string; StopIfNotAllCopied,
   OverWriteFiles: Boolean): Boolean;
var
   SR: TSearchRec;
   I: Integer;
begin
   Result := False;
   SourceDir := IncludeTrailingBackslash(SourceDir);
   TargetDir := IncludeTrailingBackslash(TargetDir);
   if not DirectoryExists(SourceDir) then
     Exit;
   if not ForceDirectories(TargetDir) then
     Exit;
 
   I := FindFirst(SourceDir + '*', faAnyFile, SR);
   try
     while I = 0 do
     begin
       if (SR.Name <> '') and (SR.Name <> '.') and (SR.Name <> '..') then
       begin
         if SR.Attr = faDirectory then
           Result := FullDirectoryCopy(SourceDir + SR.Name, TargetDir + SR.NAME,
             StopIfNotAllCopied, OverWriteFiles)
         else if not (not OverWriteFiles and FileExists(TargetDir + SR.Name))
           then
           Result := CopyFile(Pchar(SourceDir + SR.Name), Pchar(TargetDir +
             SR.Name), False)
         else
           Result := True;
         if not Result and StopIfNotAllCopied then
           exit;
       end;
       I := FindNext(SR);
     end;
   finally
     SysUtils.FindClose(SR);
   end;
end;


Пример использования:  
FullDirectoryCopy('C:\a', 'D:\b');
Просмотров: 1272 | Добавил: NetSoftWare | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: