[quote=notricky]
Цитата:
Сообщение от UFO 007
Быть может после begin сразу написать
Код:
1 2 | ....<b> begin </b>
GetPlaylist := TWinampPlaylist . Create;
|
? 
|
К сожалению эту идею проишлось умертвить т.к. после Create второй строкой:
- зависание... Но успешно воплотилась другая идея:
Код:
1 | .... If MyPlayerButton . Checked then ...
|
изменяем значение ключа реестра, отвечающего за m3u или mp3 на путь к Винампу с моей болванки и тогда ShellExecute отлично передаёт ему путь к плэйлисту: CurDir + ArtistBox + AlbumBox. Теперь проблема след.: чтобы нати папку Music и выкапывать оттуда значения для вышеупомянутых КомбоБоксов припахал первое попавшее под руку средство - DirectoryListBox1 (более подходящего метода вродь как не нашёл), но пока прога откатывалась на HDD - всё было ВэриКул, а вот как только итоговый вариант был записан на болванку .... Ни *.mp3 в TreeView1 не видно, фото артиста в Image1, ни ... потому что КомбоБоксы возвращают ' '. Ну, думаю Ща...
Короче - вот:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 | <b> Procedure </b> BoxChange (Box: TComboBox; StartDir: string ; Level_: integer );
var s: string ;
begin
form1 . DirectoryListBox1 . Directory:= StartDir;
repeat
s:= form1 . DirectoryListBox1 . GetItemPath(Level_);
if pos(StartDir, s)> 0 then
Delete(s, Pos(StartDir, s), length(StartDir));
if s <> '' then Box . Items . Add(s);
inc (Level_);
until s = '' ;
end ;
|
и если подавать ей Level_ := 0, то содержимое ArtistBox'а будет выглядет так:
C:\
C:\Program Files
C:\Program Files\Borland
C:\Program Files\Borland\Delphi7
C:\Program Files\Borland\Delphi7\Projects
C:\Program Files\Borland\Delphi7\Projects\Bpl
C:\Program Files\Borland\Delphi7\Projects\Music
а уж потом можно найти и Диану, и Маленького Принца с вложенными туда альбомами. Так вот чтобы исключить этот "мусор" - надо рассчитать Level_ :
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Level:= 0 ;
i:= Level;
<b> repeat </b>
s:= DirectoryListBox1 . GetItemPath(i);
memo2 . Lines . Add( 's= ' + s);
inc (i);
<b> until </b> Pos ( 'Music' , s) > 0 ;
CurDir:= s + '\';
StrLCopy (buf, PChar (s), max_path);
for i := 0 to SizeOf(buf) do
<b> if </b> buf[i] = '\' <b> then </b> inc (Level);
memo2 . Lines . Add( 'Level= ' + inttostr(Level));
memo2 . Lines . Add( 'CurDir= ' + CurDir);
BoxChange (ArtistBox, CurDir, Level + 1 );
ArtistBox . ItemIndex := 0 ;
artist:= CurDir + ArtistBox . Items[ArtistBox . ItemIndex]+'\';
memo2 . Lines . Add( 'artist= ' + artist);
|
Вродь как логично, но на ВиртуалСД (или только на реальной болванке всё будет Тип-Топ? - не хотелос бы лишний раз трепать DVDписюк) этот код показывает:
s= k:\
s= k:\Music
Level= 4
CurDir= k:\Music\
artist= k:\Music\\
album= \
и всё - пусто

(а на винте - всё пашет О'К: видно все фото- и биографии, проигрыватся m3u и mp3 и Каролины, и Комиссара{окромя Дианы...}, системным и моим плэйером). Кто нить знает
в чём собака порылась? и как это дело объегорить?
Заранее благодарен