Определение пути папки

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

Определение пути папки

Сообщение Nazar » 14.12.2004 (Вт) 17:16

Делаю программу, которая должна обработать все текстовые файлы, находящиеся в конкретной папке. Можно ли с помощью элемента управления CommonDialog.ShowOpen получить путь к папке? Путь к конкретному файлу ненужен, только к папке.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 14.12.2004 (Вт) 17:18

У меня сразу не получилось выбирать папки, а разбираться неохота. Поэтому лучше использовать SHBrowseForFolder:

Код: Выделить всё
Private Type BrowseInfo
    hWndOwner As Long
    pIDLRoot As Long
    pszDisplayName As Long
    lpszTitle As Long
    ulFlags As Long
    lpfnCallback As Long
    lParam As Long
    iImage As Long
End Type
Const BIF_RETURNONLYFSDIRS = 1
Const MAX_PATH = 260
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
Private Sub Form_Load()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'KPDTeam@Allapi.net
    Dim iNull As Integer, lpIDList As Long, lResult As Long
    Dim sPath As String, udtBI As BrowseInfo

    With udtBI
        'Set the owner window
        .hWndOwner = Me.hWnd
        'lstrcat appends the two strings and returns the memory address
        .lpszTitle = lstrcat("C:\", "")
        'Return only if the user selected a directory
        .ulFlags = BIF_RETURNONLYFSDIRS
    End With

    'Show the 'Browse for folder' dialog
    lpIDList = SHBrowseForFolder(udtBI)
    If lpIDList Then
        sPath = String$(MAX_PATH, 0)
        'Get the path from the IDList
        SHGetPathFromIDList lpIDList, sPath
        'free the block of memory
        CoTaskMemFree lpIDList
        iNull = InStr(sPath, vbNullChar)
        If iNull Then
            sPath = Left$(sPath, iNull - 1)
        End If
    End If

    MsgBox sPath
End Sub

Tin
Woodsman
Woodsman
Аватара пользователя
 
Сообщения: 1001
Зарегистрирован: 08.12.2001 (Сб) 11:00
Откуда: Kazakhstan

Сообщение Tin » 15.12.2004 (Ср) 12:52

а почему бы просто объект Dir не поюзать, господа? Дёшево и сердито ;)
888888__88__88____88
__88________8888__88
__88____88__88__8888
__88____88__88____88

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

Сообщение Ruslan Demidow » 15.12.2004 (Ср) 19:12

Tin писал(а):а почему бы просто объект Dir не поюзать, господа? Дёшево и сердито ;)
А папку ты как пользователю предложишь выбрать? Вот про это и топик... :)
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

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

Сообщение tyomitch » 15.12.2004 (Ср) 19:46

Ruslan, речь идёт не а функции Dir, а о контроле DirBox...
Изображение

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

Сообщение Ruslan Demidow » 15.12.2004 (Ср) 22:27

tyomitch писал(а):Ruslan, речь идёт не а функции Dir, а о контроле DirBox...
Ага. Теперь понял. :oops:
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 15.12.2004 (Ср) 22:59

Можно и DirListBox, конечно. Но это сердито и некрасиво %)

Tin
Woodsman
Woodsman
Аватара пользователя
 
Сообщения: 1001
Зарегистрирован: 08.12.2001 (Сб) 11:00
Откуда: Kazakhstan

Сообщение Tin » 16.12.2004 (Чт) 7:42

ну а чем тогда комдлг лучше? чем он красивее?
888888__88__88____88
__88________8888__88
__88____88__88__8888
__88____88__88____88

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

Сообщение SHURUP » 16.12.2004 (Чт) 13:30

Как по мне, то идеально - текстовое поле, а рядом кнопка "Обзор…" - чтоб можно было или текст ввести, или по SHBrowseForFolder - выбрать.
Токо вот желательно, чтоб при написании адресса в текстбоксе - предлагалися возможные существующие папки.
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

Tin
Woodsman
Woodsman
Аватара пользователя
 
Сообщения: 1001
Зарегистрирован: 08.12.2001 (Сб) 11:00
Откуда: Kazakhstan

Сообщение Tin » 16.12.2004 (Чт) 15:33

на вкус и цвет, как говориться..
888888__88__88____88
__88________8888__88
__88____88__88__8888
__88____88__88____88

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

Сообщение tyomitch » 16.12.2004 (Чт) 20:18

SHURUP писал(а):Токо вот желательно, чтоб при написании адресса в текстбоксе - предлагалися возможные существующие папки.

Вот пример автоподстановки:
Код: Выделить всё
'Code by Lъcio Chaves (luciochaves@bol.com.br)
'This program needs a textbox ('Text1') on a form
Private Const SHACF_AUTOAPPEND_FORCE_OFF = &H80000000
Private Const SHACF_AUTOAPPEND_FORCE_ON = &H40000000
Private Const SHACF_AUTOSUGGEST_FORCE_OFF = &H20000000
Private Const SHACF_AUTOSUGGEST_FORCE_ON = &H10000000
Private Const SHACF_DEFAULT = &H0
Private Const SHACF_FILESYSTEM = &H1
Private Const SHACF_URLHISTORY = &H2
Private Const SHACF_URLMRU = &H4
Private Const SHACF_USETAB = &H8
Private Const SHACF_URLALL = (SHACF_URLHISTORY Or SHACF_URLMRU)
Private Declare Sub SHAutoComplete Lib "shlwapi.dll" (ByVal hwndEdit As Long, ByVal dwFlags As Long)
Private Sub Form_Load()
    SHAutoComplete Text1.hWnd, SHACF_DEFAULT
End Sub
Изображение

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

Сообщение SHURUP » 16.12.2004 (Чт) 22:31

2tyomitch: именно то! Плюс кнопка "броуз" из поста Amed-a и будет - ВэрриГуд!
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...


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

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

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

    TopList  
cron