|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Диалог выбора папки и добавление файлов ListBox
Собственно как реализовать помощью SelectDirectory?
Пытаюсь: Код:
var Directory: string; begin if SelectDirectory('Выбери папку:', '', Directory) then SendMessage(PlayList.Handle, LB_DIR, DDL_DIRECTORY, Integer(Directory)); Ах да, еще желательно бы чтобы подпапки учитывались. |
#2
|
|||
|
|||
Функция SelectDirtectory возвращает тебе ТОЛЬКО имя выбранной пользователем папки. Далее делаем поиск всех файлов (если надо - рекурсивно по подпапкам) с помощью функций FindFirst/FindNext/FindClose. Примеров использования этих функций везде полно, в том числе в документации достаточно понятный пример.
|
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
sariman (20.11.2012)
|
#3
|
||||
|
||||
Вот нашел пример, но при выборе локального диска, выдает в листбоксе с двумя флэшами, например: D:\\Files\Music, а если просто папку с подпапками, то выводит нормально, подскажите в чем проблема?
Код:
procedure GetAllFiles(const Path: string; ListBox: TListBox ); var sRec: TSearchRec; isFound: Boolean; begin isFound := FindFirst(Path + '\*.*', faAnyFile, sRec) = 0; while isFound do begin if (sRec.Name <> '.') and (sRec.Name <> '..') then begin if (sRec.Attr and faDirectory) = faDirectory then GetAllFiles(Path + '\' + sRec.Name, ListBox); if Pos('.mp3', Copy(sRec.Name, Length(sRec.Name)-3, 4)) = 1 then ListBox.Items.Add(Path + '\' + sRec.Name); if Pos('.AAC', Copy(sRec.Name, Length(sRec.Name)-3, 4)) = 1 then ListBox.Items.Add(Path + '\' + sRec.Name); end; Application.ProcessMessages; isFound := FindNext(sRec) = 0; end; FindClose(sRec); end; |
#4
|
||||
|
||||
Цитата:
|
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
sariman (20.11.2012)
|
#5
|
||||
|
||||
Что выполняет эта функция? Не понимаю что вы подразумеваете под "явным добавлением слэша", имеете ввиду вот это?
Код:
Path + '\' + sRec.Name |
#6
|
||||
|
||||
Цитата:
Код:
IncludeTrailingPathDelimiter(Path) + sRec.Name |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
sariman (20.11.2012)
|
#7
|
||||
|
||||
Огромное спасибо!
|