Форум » Программистские штучки » Диалог открытия файлов в Basic6.0 » Ответить

Диалог открытия файлов в Basic6.0

Бутеноп: [pre2] Option Explicit Dim arr_name_file() As String 'В этот массив будут писаться полные имена файлов Sub open_file(ByRef arr_name_file) Dim Len_str As Integer 'длина строки с именами Dim num_file As Byte Dim tmp As Variant Dim add_arr(10000) As Integer Dim i As Integer num_file = 0 With CD1_OF .FilterIndex = 1 'Применение фильтра .Flags = &H200 + &H80000 + &H4 + cdlOFNFileMustExist 'Установка multiselect(&H200), приведение к красивому виду(&H20000), нет значка "только чтение"(&H4) .InitDir = "C:\" 'Папка по умолчанию .ShowOpen 'Показать диалоговое окно открытия файла End With 'Бля! Я, конечно, понимаю, что многое из нижеприведённого ну полный бред, и наверняка это делается намного проще, но за неимением лучшего варианта пусть будет пока так. Len_str = Len(CD1_OF.FileName) If Len_str = 0 Then 'Условие, чтоб хоть что-то было выбрано ReDim arr_name_file(0) arr_name_file(0) = "Надо бы что-то выбрать..." num_file = 0 Else add_arr(num_file) = InStr(1, CD1_OF.FileName, Chr(0)) + 1 'Поиск первого Null If add_arr(num_file) = 1 Then 'Коли такового не найдётся, то читаем путь и имя для одного файла num_file = 1 ReDim arr_name_file(1) arr_name_file(num_file) = CD1_OF.FileTitle arr_name_file(0) = CurDir 'Путь к папке Else 'А иначе дрочимся со многими... Do num_file = num_file + 1 add_arr(num_file) = InStr(add_arr(num_file - 1), CD1_OF.FileName, Chr(0)) + 1 Loop Until add_arr(num_file) = 1 'Вот... Посчитали количество Null+1, т.е. количество файлов. Заодно, мимоходом, записали их положение в строке ReDim arr_name_file(num_file) 'Задание размерности массива с именами файлов arr_name_file(0) = Mid(CD1_OF.FileName, 1, add_arr(0) - 2) 'Путь к папке For i = 1 To num_file - 1 arr_name_file(i) = Mid(CD1_OF.FileName, add_arr(i - 1), add_arr(i) - add_arr(i - 1) - 1) Next i arr_name_file(i) = Mid(CD1_OF.FileName, add_arr(i - 1)) 'Ну а тут, собственно, все имена сводятся в масив, в индексе 0 путь к папке End If End If 'Каменты к итогу: _ 1. Впринципе, мне не очень надо знать длину файла, но с другой стороны, я с её помощью нормально так цепляюсь к ппередаче в след. процедуру. End Sub [/pre2]

Ответов - 0



полная версия страницы