Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Удаление и копирование папки / 3 сообщений из 3, страница 1 из 1
31.10.2003, 18:31
    #32312300
Aptem - programmer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление и копирование папки
Привет, ВСЕМ !!!

Как удалять и копировать папки ( естественно, со вложенными файлами и другими папками ) ?

Спасибо за внимание !
...
Рейтинг: 0 / 0
02.11.2003, 08:21
    #32312711
Johnson
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление и копирование папки
SHFileOperation
...
Рейтинг: 0 / 0
03.11.2003, 09:58
    #32313084
SAnatoliy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление и копирование папки
Вот так перемещать. (Вырезал кусок кода из своей проги)
Если что не понятно пиши.

вставить в секцию uses модуль ShellAPI,
в котором определена функция SHFileOperation.
............
if(MoveFiles == 1) {
SHFILEOPSTRUCT op;
ZeroMemory(&op,sizeof(op));
String RestoreDir, RestoreToDir,PathFil;
RestoreDir = pcfile; //что копировать, полный путь с именем файла
RestoreToDir = pcpath; //куда копировать, полный путь к директории
RestoreDir.SetLength(RestoreDir.Length()+1);
RestoreDir[RestoreDir.Length()]='\0';
RestoreDir.SetLength(RestoreDir.Length()+1);
RestoreDir[RestoreDir.Length()]='\0';
RestoreToDir = RestoreToDir+"\\";
RestoreToDir.SetLength(RestoreToDir.Length()+NULL+NULL);
op.hwnd=0;
op.wFunc = FO_MOVE;
op.pFrom = RestoreDir.c_str();
op.pTo = RestoreToDir.c_str();
op.fFlags = FOF_ALLOWUNDO|FOF_FILESONLY;
int copy_done = SHFileOperation(&op);
if(copy_done ==0) { if(op.fAnyOperationsAborted) { L1->Caption="Процесс перемещения файла остановлен"; } }
else { L1->Caption="Перемещение файла не удалось."; }
}
}

А вот описание:
function SHFileOperation(const lpFileOp: TSHFileOpStruct): Integer; stdcall;
Данная функция позволяет производить копирование, перемещение,
переименование и удаление
(в том числе и в Recycle Bin) объектов файловой системы.
Функция возвращает 0, если операция выполнена успешно, и ненулевое
значение в противном случае.
Функция имеет единственный аргумент - структуру типа TSHFileOpStruct,
в которой и передаются все необходимые данные.
Эта структура выглядит следующим образом:
_SHFILEOPSTRUCTA = packed record
Wnd: HWND;
wFunc: UINT;
pFrom: PAnsiChar;
pTo: PAnsiChar;
fFlags: FILEOP_FLAGS;
fAnyOperationsAborted: BOOL;
hNameMappings: Pointer;
lpszProgressTitle: PAnsiChar;{используется только при установленном
флаге FOF_SIMPLEPROGRESS}
end;
Поля этой структуры имеют следующее назначение:
hwnd
Хэндл окна, на которое будут выводиться диалоговые окна о ходе операции.
wFunc
Требуемая операция. Может принимать одно из значений:
FO_COPY Копирует файлы, указанные в pFrom в папку, указанную в pTo.
FO_DELETE Удаляет файлы, указанные pFrom (pTo игнорируется).
FO_MOVE Перемещает файлы, указанные в pFrom в папку, указанную в pTo.
FO_RENAME Переименовывает файлы, указанные в pFrom.
pFrom
Указатель на буфер, содержащий пути к одному или нескольким файлам.
Если файлов несколько, между путями ставится нулевой байт.
Список должен заканчиваться двумя нулевыми байтами.
pTo
Аналогично pFrom, но содержит путь к директории - адресату,
в которую производится копирование или перемещение файлов.
Может содержать несколько путей.
При этом нужно установить флаг FOF_MULTIDESTFILES.
fFlags
Управляющие флаги:
FOF_ALLOWUNDO Если возможно, сохраняет информацию для возможности UnDo.
FOF_CONFIRMMOUSE Не реализовано.
FOF_FILESONLY Если в поле pFrom установлено *.*,
то операция будет производиться только с файлами.
FOF_MULTIDESTFILES Указывает, что для каждого исходного файла
в поле pFrom указана своя директория - адресат.
FOF_NOCONFIRMATION Отвечает " yes to all" на все запросы в ходе опеации.
FOF_NOCONFIRMMKDIR Не подтверждает создание нового каталога,
если операция требует, чтобы он был создан.
FOF_RENAMEONCOLLISION В случае, если уже существует файл с данным именем,
создается файл с именем " Copy #N of..."
FOF_SILENT Не показывать диалог с индикатором прогресса.
FOF_SIMPLEPROGRESS Показывать диалог с индикатором прогресса,
но не показывать имен файлов.
FOF_WANTMAPPINGHANDLE Вносит hNameMappings элемент.
Дескриптор должен быть освобожден функцией SHFreeNameMappings.
fAnyOperationsAborted
Принимает значение TRUE если пользователь прервал любую файловую
операцию до ее завершения и FALSE в ином случае.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Удаление и копирование папки / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]