![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CopyFile [D6, XP]
Ladan © (2006-06-11 18:43:00)Добрый день! У меня такой вопрос: почему такой код работает CopyFileA('D:\1.exe','С:\1.exe',Failed(STATUS_WAIT_0)), а такой нет CopyFileA('D:\1.exe',А,Failed(STATUS_WAIT_0)), где А:=''С:\1.exe';
Подскажите как решить эту проблему, очень нужно!
И еще вопрос: Как скопировать папку целиком? (Желательно с помощью DirectoryListBox).
Заранее благодарю!
Virgo_Style (2006-06-11 21:50:00) [1]Ladan (11.06.06 18:43)
Проблему описывать надо.
А решается,PChar(A),, ежели телепатор не сломался
jb (2006-06-11 19:16:00) [2]И еще совет скачай DelphiWorld с www.delphiworld.narod.ru там все есть. Сам скачал теперь наслаждаюсь.
jb (2006-06-11 19:13:00) [3]Насчет копирования директории: непонял как это с помощью DirectoryListBox, а во как просто скопировать директорию с поддиректориями:
{ **** 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;
Пример использования:
FullDirectoryCopy('C:\a', 'D:\b');
// Скопирует содержимое директории C:\a (не не саму директорию) в директорию D:\b