|
|
|
Удаление и копирование папки
|
|||
|---|---|---|---|
|
#18+
Привет, ВСЕМ !!! Как удалять и копировать папки ( естественно, со вложенными файлами и другими папками ) ? Спасибо за внимание ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2003, 18:31 |
|
||
|
Удаление и копирование папки
|
|||
|---|---|---|---|
|
#18+
SHFileOperation ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2003, 08:21 |
|
||
|
Удаление и копирование папки
|
|||
|---|---|---|---|
|
#18+
Вот так перемещать. (Вырезал кусок кода из своей проги) Если что не понятно пиши. вставить в секцию 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 в ином случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 09:58 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32312300&tid=2035826]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 400ms |

| 0 / 0 |
