Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Как удалить папку напрочь?


Автор: alt5000 16.1.2007, 13:09
При попытке создать папку с тем же именем возникает ошибкаю Перед этим я пытаюсь удалить папку с помощью RmDir(), но она почему - то не удаляется. Помогите пожалуйста мне удалит напрочь эту папку (пустую или с файлами внутри).

И еще один вопрос. Можно ли в VB с помощью конструкции if Dir("имя папки") <>"" then проверить наличие папки (а не файла!). Если можно, то подскажите пожалуйста, как, а то совсем не получается ничего.  smile 

Заранее благодарен...

Автор: alt5000 16.1.2007, 13:24
ДОПОЛНЕНИЕ : Я понял так, что вначале нужно удалить содержимое папки с помощью \*.*, а потом саму папку, но для программы мне нужно, чтобы он совершал эти опреации только когда папка существует, так как в противном случае, мы нарываемся на ошибку. А вот как проверить есть ли эта папка (пустая или нет)? if dir ()<>"" почему-то проезжает эту проверку...

Добавлено @ 13:28 
ДОПОЛНЕНИЕ: На всякий случай даю код (правда сомневаюсь, что это как-то поможет):

If Dir(path_gen) <> "" Then
Kill (path_gen + "\*.*")
RmDir (path_gen)
End If

Автор: Akina 16.1.2007, 16:48
Пытаешься сделать эту папку текущей. 
Если получилось - удаляешь из нее все файлы. Задача решена.
Иначе пытаешься ее создать.
Если получилось - задача решена.

Иначе выводишь сообщение о невозможности выполнить операцию. То, где и какая ошибка возникнет, укажет на причину (права, совместный доступ, атрибуты и пр.)

С помощью Dir() проверить существование папки нельзя.

Автор: bom 17.1.2007, 00:32
Резюмируя алгоритм Akina, в коде это будет выглядеть примерно так:
Код

Dim FoldPath As String
FoldPath = "C:\Documents and Settings\User\Рабочий стол\TestFold"
On Error GoTo errproc
If GetAttr(FoldPath) And vbDirectory Then 'Если папка существует - удаляем:
    Dim delFSO As Object
    Set delFSO = CreateObject("Scripting.FileSystemObject")
    delFSO.DeleteFolder FoldPath, True
    Set delFSO = Nothing
    Else
    'Если существует, но не является папкой:
    MsgBox FoldPath & " не является директорией!", vbCritical
End If
Exit Sub
errproc:
'Если папка не существует - создадим:
If Err.Number = 53 Then MkDir (FoldPath) Else MsgBox Err.Description, vbCritical

Автор: alt5000 17.1.2007, 09:38
Всем спасибо за ответы. Попробую сделать...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)