![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Собственно как реализовать помощью 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)
| ||