![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени суток....
У меня такая проблема.... Структура каталогов: c:\555\новая папка c:\555\DVD получается так, когда я удаляю подпапки (новая папка и DVD) они удаляются, а вот когда дело доходит до удаления 555, тогда возникает ошибка, говорит что не могу удалить папку.....ПОчеМу???Алгоритм один и тот же, что и при удалении подкаталогов. ПаМаГиТе!!! |
|
#2
|
|||
|
|||
|
Покажи алгоритм и может в 555 есть файл какой
|
|
#3
|
|||
|
|||
|
В том то и дело....нет там никаких файлов....я проверял....программно через FindFirst и через explorer....
|
|
#4
|
|||
|
|||
|
Когда делаю действие на кнопке RmDir('c:\555') удаляет и не возникает никакой ошибки....не могу понять причину....
|
|
#5
|
|||
|
|||
|
Тогда, возможно, ошибка в твоем алгоритме
|
|
#6
|
|||
|
|||
|
алгоритм...
function IsDirEmpty(sDirPath: String): Boolean; var fs: TSearchRec; begin Result := True; sDirPath:= IncludeTrailingPathDelimiter(sDirPath); if FindFirst(sDirPath+ '*.*', faAnyFile, fs) = 0 then repeat if (fs.Name <> '.') and (fs.Name <> '..') then begin Result := False; FindClose(fs); Exit; end; until FindNext(fs) <> 0; FindClose(fs); end; .... if isDirEmpty(Path) then RmDir(Path); |
|
#7
|
||||
|
||||
|
Цитата:
Самый легкий способ используй этот код ShellAPI Код:
procedure TForm1.Button1Click(Sender: TObject);
var
SHFileOpStruct : TSHFileOpStruct;
From : array [0..255] of Char;
begin
SetCurrentDirectory( PChar( 'C:\' ) );
From := 'Test1.tst' + #0 + 'Test2.tst' + #0 + #0;{Сдесь приведен пример удаление 2 файлов тебе просто надо в кавычках написать путь к примеру для удаления папки 'c:\555\новая папка'+#0+'c:\555\DVD'+#0+#0 удаляет папку и ее содержимое}
with SHFileOpStruct do
begin
Wnd := Handle;
wFunc := FO_DELETE;
pFrom := @From;
pTo := nil;
fFlags := 0;
fAnyOperationsAborted := False;
hNameMappings := nil;
lpszProgressTitle := nil;
end;
SHFileOperation( SHFileOpStruct );
end;Если надо чтоб пользователь не выбирал действия поставь в fFlags:=OF_NOCONFIRMATION {Отвечает для всех операций вместог пользователя Да} Если надо удалить в корзину то пиши в флаге FOF_ALLOWUNDO -------- Список и описание для флага операций 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. |