Удаление файлов

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

Удаление файлов

Сообщение Kovu » 06.02.2006 (Пн) 16:59

Можно ли каким-либо образом заставить выводить SHFileOperation ProgressBar при флаге FOF_NOCONFIRMATION ? Ибо как только этот флаг ставишь флаг FOF_SIMPLEPROGRESS не имеет действия :roll:
Если всё делать своими ручками, они скоро отвалятся !

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

Сообщение Kovu » 06.02.2006 (Пн) 17:27

Да, и попутный вопрос: как путь получаемый через GetTempPath Преобразовать к стандартному виду? (не все апи-функции воспринимают ~1)
Если всё делать своими ручками, они скоро отвалятся !

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 06.02.2006 (Пн) 17:40

см ф-ии с W на конце, а не с A

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

Сообщение Kovu » 06.02.2006 (Пн) 17:53

А можно поподробней обяснить?
Я изменил декларацию на
Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationW" (ByRef lpFileOp As SHFILEOPSTRUCT) As Long
Передаю соответственно SHO.pFrom = StrConv(AppPath + "*.*", vbUnicode)
Тем не менее функция не отрабатывает, аналогично и с другими функциями для работы с файлами :cry: :roll:
Если всё делать своими ручками, они скоро отвалятся !

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

Сообщение Kovu » 07.02.2006 (Вт) 12:20

Подскажите пожалуйста в какую сторону хотя бы рыть, чтобы преобразовать путь в полный :roll:
Если всё делать своими ручками, они скоро отвалятся !

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.02.2006 (Вт) 12:30

мне просто интересно, а что вы хотите сделать с ф-ей SHFileOperation :?: Какова ваша цель?

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 07.02.2006 (Вт) 12:31

Kovu писал(а):Подскажите пожалуйста в какую сторону хотя бы рыть, чтобы преобразовать путь в полный :roll:


GetLongPathName
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.02.2006 (Вт) 12:35

Код: Выделить всё
Private Const MAX_PATH = 260
Public Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Public Function FileTempPath() As String
Dim Res As Long

  FileTempPath = Space(MAX_PATH)
  Res = GetTempPath(MAX_PATH, FileTempPath)
  FileTempPath = Left$(FileTempPath, Res)

End Function


Вот это попробуйте для начала.

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

Сообщение Kovu » 07.02.2006 (Вт) 12:43

Konst_One
Так и знал, что спросят :)
Удалить собственно перед завершением программы временные файлы, которые были ей созданы при запуске (а так как их много и в поддиректориях, то SHFileOperation как раз подходит для этих целей). Прогрессбар нужен собственно чтоб пользователь видел что программа завершается, но при этом не мог отменить операцию.
Andrey Fedorov
Спасибо
Если всё делать своими ручками, они скоро отвалятся !

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

Сообщение Kovu » 07.02.2006 (Вт) 12:44

Konst_One
Путь полученный с помощью такого кода как раз не является полным :)
Если всё делать своими ручками, они скоро отвалятся !

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.02.2006 (Вт) 12:49

у меня полный. может у вас XP и темповая директория лежит в юзеровском профайле?

вообще-то для обычной команды KILL все равно :wink:

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

Сообщение Kovu » 07.02.2006 (Вт) 12:52

Konst_One
Если б вы внимательно прочитали мой пост, то там написано что файлы создаются в папке с поддиректориями, так что Kill'y всю папку полную файлов и поддиректорий не под силу удалить :)
P.S.
У меня действительно ХР
Если всё делать своими ручками, они скоро отвалятся !

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.02.2006 (Вт) 13:01

с помощью FSO легко можно удалить все ваши папки с файлами одной командой :!:

Код: Выделить всё
' NOTE: this code requires that you add a reference to the
'       Microsoft Scripting Runtime type library

' delete the C:\TEMP directory and all its sub-directories
Dim fso As New Scripting.FileSystemObject
fso.DeleteFolder "c:\temp"


You can also pass a second argument and set it to True if you want to force the deletion of read-only files:

Код: Выделить всё
fso.DeleteFolder "c:\temp", True

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

Сообщение Kovu » 07.02.2006 (Вт) 13:08

Konst_One
Ну вот скажите, зачем мне ФСО, если SHFileOperation+RemoveDirectory делают то же самое и не надо ничего подключать =)
+ФСО прогрессбар не поддерживает , если так можно выразиться
Если всё делать своими ручками, они скоро отвалятся !

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.02.2006 (Вт) 13:18

можешь и не подключать :

Код: Выделить всё
Dim fso as Object
Set fso=CreateObject("Scripting.FileSystemObject")

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.02.2006 (Вт) 14:25

Konst_One
Так ты получишь два следствия: отсутствие подсказок по методам и медленное позднее связывание. Никакой отвязки от библиотеки не будет. В чём, таким образом, смысл?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.02.2006 (Вт) 15:26

Ну вот скажите, зачем мне ФСО, если SHFileOperation+RemoveDirectory делают то же самое и не надо ничего подключать =)


там просто кто-то не хотел ничего подключать :lol:

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

Сообщение Kovu » 07.02.2006 (Вт) 16:50

Konst_One
А что вы так яро поддерживаете ФСО?
Чем вам АПИ не нравяться то? :)
Если всё делать своими ручками, они скоро отвалятся !


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

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

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

    TopList