Как загрузить из CommonDialog...

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

Как загрузить из CommonDialog...

Сообщение TNG » 09.02.2004 (Пн) 21:26

Уважаемые программеры! Подскажите плиз как, при установке на CommonDialog флага мультивыбор файлов, добавлять имена файлов в ListBox и д.р., ведь файло разделено лишь пробелами, а надо, чтоб все имена выбранных файлов в одих лист, путь в другой...:cry:
Все будет ОК!

Unstat
Реальный басяк
Реальный басяк
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 07.01.2004 (Ср) 22:19
Откуда: Нижний Новгород

Сообщение Unstat » 09.02.2004 (Пн) 21:45

Если тебе надо сделать то что я думаю(а я думаю тебе надо выбрать в CmD множество файлов и что бы они появились в ListBox'е) тогда просто выделяй и добавляй слово пока не пробел, а если пробел тогда другое слово и т.д.

TNG
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 09.02.2004 (Пн) 21:15
Откуда: Russia

Сообщение TNG » 09.02.2004 (Пн) 22:02

Ты правильно понял. я сначало не врубился как организовать все, но тут вот пример достал...кому интересно-качайте...

P.S.: Люблю найденным с людьми делиться :)
Вложения
CODE_UPLOAD1073110172000.zip
CommonDialog, при выборе файлов они дабавляются в Лист...
(2.79 Кб) Скачиваний: 57
Все будет ОК!

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

Сообщение Cyrax » 10.02.2004 (Вт) 8:06

хочу немного прояснитьситуацию... для потомков так сказать...
при использовании Microsoft Common Dialog Control для выбора нескольких файлов в свойстве .FileName возвращается строка содержащая имена выбранных файлов разделенных пробелами. если же для этой цели используются функции библиотеки comdlg32.dll, то возвращаемые имена файлов будут разделены null-символом (Chr$(0))
для извлечения имен файлов из этой строки можно воспользоватся следующим способом
Код: Выделить всё
Dim FileList() As String ' динамический массив, в который будут помещены имена выбранных файлов
Dim i As Long

With cdl
  .DialogTitle = "Select files..."
  .FileName = ""
  .Flags = cdlOFNAllowMultiselect ' вллючаем мультиселек файлов
  .ShowOpen
 
  If .FileName = "" Then Exit Sub ' выходим если ничего не выбрано   
  FileList = Split(.FileName, Chr$(32)) ' Chr$(32) - это пробел. замените на CHR$(0) при использовании API-функции GetOpenFileName
  ' нулевым элементом массива FileList будет путь к папке в которой выделялись файлы
  ' элементы с 1 по UBound(FileList) будут содержать имена файлов
End With' теперь можно пройтись по всем элементам массива и добавить их, скажем, в ListBox
For i = 1 To UBound(FileList)
  List1.AddItem FileList(0) & "\" & FileList(i) ' добавляем полный путь к файлу
Next i


ну вот вроде бы все...
да чуть не забыл... тут есть один подводный камень, с которым я однажды столкнулся, и который не смог обойти... при выборе большого количества файлов появляется сообщение об ошибке "Run-time error 20476
The FileName buffer is too small to store the selected file(s).
(Increase MaxFileSize)"
т.е. не хватает размера буфера для хранения всех выбранных имен файлов. чтобы увеличить размер этого буфера нужно установить болшее значение для свойства .MaxFileSize. но это свойство имеет тип Integer...
хотя, скажем, тот же WinAmp спокойно открывает любое количество файлов, выбранных в диалоге открытия. значит там используется какой-то другой механизм... либо при использовании API значение MaxFileSize может быть больше, чем тип Integer...
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 10.02.2004 (Вт) 10:01

хочу немного прояснитьситуацию... для потомков так сказать...
при использовании Microsoft Common Dialog Control для выбора нескольких файлов в свойстве .FileName возвращается строка содержащая имена выбранных файлов разделенных пробелами. если же для этой цели используются функции библиотеки comdlg32.dll, то возвращаемые имена файлов будут разделены null-символом (Chr$(0))

Не только функция библиотеки обладает указанным разделителем. Сам Common Dialog Control разделяет или пробелом или vbNullChar-ом. Это зависит от наличия флага cdlOFNExplorer. При его отсутсвии разделитель - "пробел", при наличии - null-символ.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

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

Сообщение Cyrax » 10.02.2004 (Вт) 10:08

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

Welcome to IRC

#HammeR#
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 01.01.2004 (Чт) 12:09
Откуда: г.Краснодар

Сообщение #HammeR# » 10.02.2004 (Вт) 13:48

CyRax . Это ты под одноименном ником "рвеш" и "мечеш" на форумах vbnet.ru? :roll:

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

Сообщение Cyrax » 10.02.2004 (Вт) 13:50

#HammeR# писал(а):CyRax . Это ты под одноименном ником "рвеш" и "мечеш" на форумах vbnet.ru? :roll:
нет, это мой тезка ;) так что, если есть какие-то претензии... прошу извинить, они не приняты :roll:

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

Welcome to IRC


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList