Помогите с кодом.

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

Помогите с кодом.

Сообщение olegvikt » 31.05.2003 (Сб) 14:25

Как написать такую программу,которая показывает содержимое каталога, включая содержимое подкаталогов?

Александр Андреев
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 145
Зарегистрирован: 09.04.2003 (Ср) 16:43
Откуда: Н.Новгород

Сообщение Александр Андреев » 31.05.2003 (Сб) 14:34

Воспользуйся апишными функциями FindFirstFile и FindNextFile.
Далее сдалай процедуру, которая будет вызываться рекурсивно для каждого найденного подкаталога. Пусть она принимает путь к каталогу и возвращает массив найденных в этом каталоге файлов.

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 31.05.2003 (Сб) 15:45

блин... третий раз в форум этот пример отправляю
первый раз еще на старом было. вы что товарищи поиском пользоваться не умеете? или книжек у вас нет?

ладно вот вам пример и ссылка на умную книжку (а вдруг кому пригодится)
<<Джон Кларк Крейг, Джефф Уебб
Microsoft Visual Basic 5.0
Издание четвертое>> писал(а):
Введите этот код в модуль новой формы, запустите программу, и в текущем рабочем каталоге появится файл FILETREE.TXT. Закончив работу, программа автоматически завершится.
Код: Выделить всё
Option Explicit

Sub RecurseTree(CurrentPath As String)
    Dim nI As Integer, nDirectory As Integer
    Dim sFileName As String, sDirectoryList() As String
    ' сначала перечисляем все обычные файлы в текущем каталоге
    sFileName = Dir(CurrentPath)
    Do While sFileName <> ""
        Print #1, CurrentPath & sFileName
        sFileName = Dir
    Loop
    ' теперь формируем временный список подкаталогов
    sFileName = Dir(CurrentPath, vbDirectory)
    Do While sFileName <> ""
        ' игнорируем текущий и родительские каталоги
        If sFileName <> "." And sFileName <> ".." Then
            ' игнорируем все отличное от каталогов
            If GetAttr(CurrentPath & sFileName) And vbDirectory Then
                nDirectory = nDirectory + 1
                ReDim Preserve sDirectoryList(nDirectory)
                sDirectoryList(nDirectory) = CurrentPath & sFileName
            End If
        End If
        sFileName = Dir
        ' обрабатываем другие события
        DoEvents
    Loop
    ' рекурсивно обрабатываем каждый каталог
    For nI = 1 To nDirectory
        RecurseTree sDirectoryList(nI) & ""
    Next nI
End Sub

Private Sub Form_Load()
    Dim sStartPath As String
    Me.Show
    Print "Working..."
    Me.MousePointer = vbHourglass
    sStartPath = "C:"
    Open "FILETREE.TXT" For Output As #1
    RecurseTree sStartPath
    Close
    Me.MousePointer = vbDefault
    Unload Me
End Sub

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

Welcome to IRC

viking
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 08.12.2003 (Пн) 17:49

Сообщение viking » 08.12.2003 (Пн) 18:29

использовал твой код в своей программе, но почемуто программа может работать только с каталогом С:\, a c ocтальными не хочет
вот код

Option Explicit

Sub RecurseTree(CurrentPath As String)
Dim nI As Integer, nDirectory As Integer
Dim sFileName As String, sDirectoryList() As String
sFileName = Dir(CurrentPath & "*.txt")
Do While sFileName <> ""
List1.AddItem CurrentPath & sFileName
sFileName = Dir
Loop
sFileName = Dir(CurrentPath, vbDirectory)
Do While sFileName <> ""
If sFileName <> "." And sFileName <> ".." Then
If GetAttr(CurrentPath & sFileName) And vbDirectory Then
nDirectory = nDirectory + 1
ReDim Preserve sDirectoryList(nDirectory)
sDirectoryList(nDirectory) = CurrentPath & sFileName
End If
End If
sFileName = Dir
DoEvents
Loop
For nI = 1 To nDirectory
RecurseTree sDirectoryList(nI) & "\"
Next nI
End Sub

Private Sub Command1_Click()
Dim startpath As String
startpath = Dir1.Path
RecurseTree startpath
End Sub

Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 08.12.2003 (Пн) 19:15

А ты не пробовал:
startpath = Dir1.Path & "\"
:arrow: :arrow: :arrow:

_NeoN_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 178
Зарегистрирован: 14.08.2003 (Чт) 9:48
Откуда: Новосибирск

Сообщение _NeoN_ » 08.12.2003 (Пн) 20:08

А смысл спрашивать если данный тебе код даже не смотришь???? не понимаю...


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

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

Сейчас этот форум просматривают: Google-бот и гости: 15

    TopList