Короче пишу плеер. Начал делать плей листы, ну дык вот проблема такова. Надо чтоб он добавлял все mp3'шки из папки в ListBox и чтоб в нём отображалось ТЕГ из mp3, а при двойном щелчке воспроизводился сам файл. При простом добавление одного mp3 файла всё нормально
Код | Form1.channel:=Bass_StreamCreateFile(False, PChar(Form1.OpenDialog1.FileName), 0,0,0); Listbox1.Items.AddObject(GetTagFile(Form1.Channel), Tobject(Form1.OpenDialog1.FileName));
|
Но при сканировании папки на наличие mp3 файлов, чтние их тегов и добавление в ListBox глючит, теги читаются правильно, но пути к файлам путаются? вместо одного путя, стоит другой. Вот функция сканирования на mp3 и добавление в ListBox
Код | function GetTagFile(var channel: DWORD): string; var FTitleStr: string; begin FTitleStr:= TAGS_Read(Channel, '%IFV2(%ARTI,%ICAP(%ARTI),Unknown artist) - %IFV2(%TITL,%ICAP(%TITL),Untitled)'); GetTagFile:=FTitleStr; end;
begin List.BeginUpdate; try StartFolder := IncludeTrailingBackslash(StartFolder); FindResult := FindFirst(StartFolder + '*.*', faAnyFile, SearchRec); try while FindResult = 0 do with SearchRec do begin if (Attr and faDirectory) <> 0 then begin if ScanSubFolders and (Name <> '.') and (Name <> '..') then FindFiles(StartFolder + Name, Mask, List, ScanSubFolders); end else begin if MatchesMask(Name, Mask) then BASS_MusicFree(Form1.channel); BASS_StreamFree(Form1.channel);//Очищение канала Form1.channel:=Bass_StreamCreateFile(False, PChar(StartFolder + Name), 0,0,0);//Создание потока List.AddObject(GetTagFile(Form1.Channel), Tobject(StartFolder + Name)); //добавление в Лист end; FindResult := FindNext(SearchRec); end; finally FindClose(SearchRec); end; finally List.EndUpdate; end; end;
|
Ну и чобственно вызов функции
Код | FindFiles('H:\New3', '*.mp3', ListBox1.Items, True);
|
|