{ **** UBPFD *********** by delphibase.endimus.com **** >> Копирование содержимого директории, вместе с поддиректориями. Фукция копирует СОДЕРЖИМОЕ директории 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; |