Удаление папки

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Удаление папки

Сообщение Ramzes » 17.09.2004 (Пт) 0:20

как удалить папку?

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 17.09.2004 (Пт) 1:50

Если папка пуста, то

VB методами:
Код: Выделить всё
RmDir ("D:\JERTVA")

или через API:
Код: Выделить всё
RemoveDirectory ("D:\JERTVA")


в случае если папка с файлами то тогда либо Рекурсия либо FSO(Второе предпочтительнее)
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 17.09.2004 (Пт) 3:10

Детальнее о удалении папок через FSO

Код: Выделить всё
Private Sub Command1_Click()
Set fso = CreateObject("Scripting.FileSystemObject") '*1
fso.DeleteFolder ("D:\Jertva")
End Sub


*1 - Вместо этого можно использовать
Код: Выделить всё
Dim fso As New FileSystemObject

но для этого надо в menu Ppoject>>Refferenses… поставить галочку возле Microsoft Scripting Runtime
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 17.09.2004 (Пт) 7:06

SHURUP писал(а):Детальнее о удалении папок через FSO

Код: Выделить всё
Private Sub Command1_Click()
Set fso = CreateObject("Scripting.FileSystemObject") '*1
fso.DeleteFolder ("D:\Jertva")
End Sub




Ты не учёл одного - в папке могут быть файлы с атрибутом "Только чтение" - в итоге ты получишь ошибку 70 "Permission denied".
Чтобы удалить без всяких вопросов, невзирая на атрибуты файлов и каталогов нужно использовать второй параметр DeleteFolder : указывать True.

Код: Выделить всё
Dim fso As Object
Option Explicit

Private Sub Command1_Click()
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFolder ("D:\Jertva"), True
End Sub

Так - удаляет без всяких вопросов.

SHURUP писал(а):*1 - Вместо этого можно использовать
Код: Выделить всё
Dim fso As New FileSystemObject

но для этого надо в menu Ppoject>>Refferenses… поставить галочку возле Microsoft Scripting Runtime
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 17.09.2004 (Пт) 12:32

А как удалить папку (файл) в корзину :?:
Иногда и такое бывает нужно.
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.09.2004 (Пт) 13:03

SHFileOperation с FO_DELET и FOF_ALLOWUNDO
Изображение

PATRIOT_kz
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 105
Зарегистрирован: 14.09.2004 (Вт) 21:09
Откуда: Павлодар, Казахстан

Сообщение PATRIOT_kz » 17.09.2004 (Пт) 19:37

А я ваще юзаю свою разработку, которая удаляет нахрен все файлы
в этой папке а затем и всю папку, кодик можете подкодить и можно будет даже удалять SubFolder'ы и SubFile'ы SubFolder'ах.
Вот код:
---
Код: Выделить всё
Private Sub KiLLingFR33(Popka)
    Dim File
    File = Dir(Popka & "\*.*")
    ChDir Popka
    Do While File <> ""
        Kill File
        File = Dir
    Loop
    RmDir Popka
End Sub

Private Sub Form_Load()
    KiLLingFR33 "C:\WINDOWS"
End Sub
[/code]
Press any key . . .

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.09.2004 (Пт) 22:20

Код: Выделить всё
Do While File <> ""

гораздо медленнее, чем
Код: Выделить всё
Do While Len(File)

, а ещё чуть-чуть быстрее -
Код: Выделить всё
Do While LenB(File)



PATRIOT_kz, на собственную разработку патент взял? А то ведь украдут! :-)
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22

    TopList