Visual Basic 5.0

2 отговора 127 прегледа
#1

Visual Basic 5.0

Awe zapochnah da se zanimavam s visual basic naychih che prazna papka se iztriva s RmDir (Patch Dir) sled tova se popitoh kak li 6e se iztriva papka s failove i drugi papki v neq i taka polovin godina o6e ne moga da razbera.Ako znaete kak pomognete mi.Molq.

Отговор
в отговор на Programisti pomognete mi #2

Re: Visual Basic 5.0

Май можеше да използваш API функции, за да изтриваш НЕпразна директория, но за това не съм сигурен.

За да ти работят добре програмите - си драсни една библиотека (Class), която да обхожда рекурсивно посочената директория, и да изтрива всички файлове в нея. След това да изтрива с RmDir и директориите които вече ще са празни, и няма да се връща съобщение за грешка.

----------------------------------
помислих, хареса ми, помислих пак...
Отговор
в отговор на Щиpлиц #3

Re: Visual Basic 5.0

Изрових едно примерче за рекурсивно обхождане на директория. С 2-3 реда в повече - може да се догоди да изтрива всичко, което му покажеш, но трябва да внимаваш, за да не ти зачезне някъде Windows-а. ;о)

----------------------------------
Option Explicit


Sub RecurseTree(CurrentPath As String)

Dim intN As Integer
Dim intDirectory As Integer
Dim strFileName As String
Dim strDirectoryList() As String

'Списък на всички обикновени файлове в текущата директория
strFileName = Dir(CurrentPath)
Do While strFileName <> ""
Print #1, CurrentPath & strFileName
strFileName = Dir
Loop

'Създаване на временен списък на поддиректориите
strFileName = LCase(Dir(CurrentPath, vbDirectory))
Do While strFileName <> ""
'Прескачане на текущата и родителската директории
If strFileName <> "." _
And strFileName <> ".." Then
'Прескачане на елементите, които не са директории
If GetAttr(CurrentPath & strFileName) _
And vbDirectory Then
intDirectory = intDirectory + 1
ReDim Preserve strDirectoryList(intDirectory)
strDirectoryList(intDirectory) = CurrentPath & strFileName
End If
End If
strFileName = Dir
'Обработване на другите събития
DoEvents
Loop

'Рекурсивно обхождане на всяка поддиректория
For intN = 1 To intDirectory
RecurseTree strDirectoryList(intN) & "\"
Next intN

End Sub

Private Sub Form_Load()

Dim strStartPath As String

Me.Show
Print "Working..."
Me.MousePointer = vbHourglass
strStartPath = "C:\"

Open "C:\FILETREE.TXT" For Output As #1
RecurseTree strStartPath
Close #1

Me.MousePointer = vbDefault
Unload Me

End Sub


-------------------------------------

П.П. Забравих да спомена, че кода е писан на VB6.0. Не знам какви са разликите в сравнение с версия 5, защото никога не съм писал на 5.0. В крайна сметка дори и да се наложи корекция - няма да е съществена. А пък и е време да се ориентираш към версия 6.0 ;о)

----------------------------------
помислих, хареса ми, помислих пак...

Редактирано от Щиpлиц на

Отговор