fs: runtime error 70

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

fs: runtime error 70

Сообщение Tamplier » 15.02.2006 (Ср) 19:01

Доброго времени суток!
У меня такая проблема.
Есть каталог. В нем файлы. На каталог и файлы ссылка в ФСО. Надо удалить папку. Причем, не в корзину, а совсем удалить.
У меня возникает проблема, когда я пытаюсь удалить каталог:
Runtime Error 70 : "Premission Denied"

Эффект одинаковый и если использовать фсо и если использовать апи-фушки. Очистка переменных не помогает (Set Var = Nothing).
Вот код:
Код: Выделить всё
                If FSO.FolderExists(App.Path & "\Tests\" & NewNameOfTest) = True Then FSO.DeleteFolder App.Path & "\Tests\" & NewNameOfTest, True
                FSO.CreateFolder App.Path & "\Tests\" & NewNameOfTest
                CopyFile TestIniFile, App.Path & "\Tests\" & NewNameOfTest & "\" & NewNameOfTest & ".ini", False
                CopyFile QuestionsFile, App.Path & "\Tests\" & NewNameOfTest & "\" & NewNameOfTest & ".tsq", False
                Close QuestionsNumber
'                ошибка
                CreateOrEditTestFolder.Delete
'                ошибка
'                FSO.DeleteFolder App.Path & "\Tests\" & RTrim(TestName)
                Set CreateOrEditTestFolder = FSO.GetFolder(App.Path & "\Tests\" & NewNameOfTest)
                Set TestFilesList = CreateOrEditTestFolder.Files


И еще вопрос: Что значит параметр Force в функции фсо "Delete"?

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 15.02.2006 (Ср) 20:53

Tamplier
Перевожу ошибку: Доступ закрыт
То есть какие-то файлы в удаляемой папке используются. Хотя есть подозрение, что она не удаляется именно изза наличия в ней файлов :)
(не люблю ФСО)
Форсе наверняка приводит к тому, что папка удаляется даже если в ней куча файлов. :)
Если всё делать своими ручками, они скоро отвалятся !

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 15.02.2006 (Ср) 23:00

Если у тебя NTFS, проверь разрешения на данную папку, возможно, просто нет прав удаления.
Force -- необязательный параметр, если = True, то позволяет удалять файлы, помеченные "только для чтения". Для FileSystemObject.DeleteFolder нет разницы пустая папка или с файлами.
Попробуй еще так:
Код: Выделить всё
' Удаляем папку
Dim fso, fld
Set fso = CreateObject("Scripting.FileSystemObject")
Set fld = fso.GetFolder("c:\FolderName")
fld.Delete

P.S. Присмотрелся -- у тебя местами перепутано Delete и GetFolder :wink:
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 16.02.2006 (Чт) 15:27

Все там правильно. Если ты посмотришь еще раз, то, возможно, заметишь, что сначала создается папка с именем NewNameOfTest, потом копируются туда файлы, потом удаляется старая папка. После удаления папки, ссылка переобъявляется на новую. Да с этим, собственно, все в порядке.

Доступ проверяется горадо раньше, да и в любом случае, стоит фат.
Но гораздо смешнее результат. После окончания работы проги файлы оказались удалены в корзину! Это как можно понять??

К сожалению на то, чтобы использовать не фсо, у меня нет времени, проект сдавать ч/з полмесяца, а разбираться во всех тонкостях фс ч/з апи или иные фичи не успеваю.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 16.02.2006 (Чт) 16:39

Tamplier писал(а):Все там правильно. Если ты посмотришь еще раз, то, возможно, заметишь, что сначала создается папка с именем NewNameOfTest, потом копируются туда файлы, потом удаляется старая папка. После удаления папки, ссылка переобъявляется на новую. Да с этим, собственно, все в порядке.

Посмотри еще раз свой код (http://bbs.vbstreets.ru/viewtopic.php?t=23376#6585941). Возможно, ты заметишь, что сначала ты удаляешь каталог:
Код: Выделить всё
If FSO.FolderExists(App.Path & "\Tests" & NewNameOfTest) = True Then FSO.DeleteFolder App.Path & "\Tests" & NewNameOfTest,

Потом его же создаешь:
Код: Выделить всё
FSO.CreateFolder App.Path & "\Tests" & NewNameOfTest
и копируешь туда файлы.
А это что такое непонятно:
Код: Выделить всё
Close QuestionsNumber
'                ошибка
CreateOrEditTestFolder.Delete

Откуда взялось CreateOrEditTestFolder :?:
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Tamplier
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 183
Зарегистрирован: 18.11.2005 (Пт) 13:35
Откуда: Москва

Сообщение Tamplier » 17.02.2006 (Пт) 16:44

VVitafresh писал(а):
Tamplier писал(а):Все там правильно. Если ты посмотришь еще раз, то, возможно, заметишь, что сначала создается папка с именем NewNameOfTest, потом копируются туда файлы, потом удаляется старая папка. После удаления папки, ссылка переобъявляется на новую. Да с этим, собственно, все в порядке.

Посмотри еще раз свой код (http://bbs.vbstreets.ru/viewtopic.php?t=23376#6585941). Возможно, ты заметишь, что сначала ты удаляешь каталог:
Код: Выделить всё
If FSO.FolderExists(App.Path & "\Tests" & NewNameOfTest) = True Then FSO.DeleteFolder App.Path & "\Tests" & NewNameOfTest,

Потом его же создаешь:
Код: Выделить всё
FSO.CreateFolder App.Path & "\Tests" & NewNameOfTest
и копируешь туда файлы.

А, это, это я проверяю, есть ли такой каталог, если есть - то удаляю его.

CreateOrEditTestFolder - это как раз и есть тот самый каталог, который мы в итоге удаляем. Его имя - TestName. На это имя потом вешаем новый каталог.


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 89

    TopList