Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Открытие нескольких файлов - Phase 2 Добавлено: 26.03.07 21:24  

Автор вопроса:  Wolf4D | Web-сайт: www.madnesstudio.ru
Когда-то не очень давно я задавал вопрос слудующего содержания:
Возник вопрос:
Наверное, практически все видели Adobe Photoshop. Наверное, многие замечали, что при выделении нескольких файлов в диалоге открытия, Photoshop, собственно, несколько файлов и открывает. Как такое можно реализовать на VB 6 - чтобы через одно открытие диалога захватывать несколько файлов?

В общем, нашлась ссылка в примерах:
http://www.vbnet.ru/faq/showtopic.asp?id=333
Опробовал. Работает. Вот только результат выдаёт в таком виде:
Если пробую выделить, например, 2 файла, 1.TXT и 2.TXT, лежащие на диске D:
D:\ 1.txt 2.txt

Вот в чём вопрос (может, я спрашиваю что-то ужасно простое): как получить названия и пути отдельных файлов (обычное разделение по местонахождению пробела или точки не подходит (я могу создать папку "Просто папка.для прикола" и программа выйдет из строя).
+ вопрос №2: в диалоге открытия почему-то видны досовские имена директорий и файлов. Как бы это можно было бы исправить?

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #1 Добавлено: 26.03.07 21:45
А если сначала отсечь строку от последнего слеша, а потом ее делить по пробелам?

Ответить

Номер ответа: 2
Автор ответа:
 Wolf4D



Вопросов: 20
Ответов: 131
 Web-сайт: www.madnesstudio.ru
 Профиль | | #2
Добавлено: 26.03.07 22:02
А если файл называется "Просто файл.Txt"?

Ответить

Номер ответа: 3
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #3
Добавлено: 26.03.07 22:13
Ты наверно какой - то кривой пример нашел.
Вот смотри:
Private Const OFN_EXPLORER = &H80000
Private Const OFN_ALLOWMULTISELECT = &H200
Private Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type
Private Declare Function GetOpenFileNamePreview Lib "msvfw32.dll" (ByRef lpofn As OPENFILENAME) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Sub Form_Load()
Dim OFN As OPENFILENAME, Ret As Long, t As String
With OFN
    .lStructSize = Len(OFN)
    .hInstance = App.hInstance
    .hwndOwner = Me.hWnd
    .lpstrTitle = "Open a file"
    .lpstrFilter = "TXT file (*.txt)" + Chr$(0) + "*.txt" + Chr$(0) + "All files (*.*)" + Chr$(0) + "*.*"
    .lpstrFile = String(255, 0)
    .nMaxFile = 255
    .flags = OFN_EXPLORER Or OFN_ALLOWMULTISELECT
End With
Ret = GetOpenFileNamePreview(OFN)
If Ret <> 0 Then
    CloseHandle Ret
    t = Replace(OFN.lpstrFile, Chr(0), vbCrLf)
    Text1.Text = t
End If
End Sub

поставь Text1.MultiLine = True

Грубо говоря, в конце концов в OFN.lpstrFile у нас будет следующее:
1 - адрес папки, в которой ты выбрал файлы
2,3...n - имена файлов
а в качестве разделителя используется не пробел, а chr(0), так что проблем с отделением папки от файлов нет :)

Ответить

Номер ответа: 4
Автор ответа:
 Wolf4D



Вопросов: 20
Ответов: 131
 Web-сайт: www.madnesstudio.ru
 Профиль | | #4
Добавлено: 26.03.07 22:26
Спасибо! Теперь действительно работает.
Вот только в конце строки программа мне выводит с четверть тысячи вот таких вот chr(0). Но это дело поправимое.
Надеюсь, темы "Открытие нескольких файлов - Phase 3" не появится :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам