[quote=notricky]
Цитата:
Сообщение от UFO 007
Быть может после begin сразу написать
Код:
....begin
GetPlaylist := TWinampPlaylist.Create;
? 
|
К сожалению эту идею проишлось умертвить т.к. после Create второй строкой:
- зависание... Но успешно воплотилась другая идея:
Код:
....If MyPlayerButton.Checked then ...
изменяем значение ключа реестра, отвечающего за m3u или mp3 на путь к Винампу с моей болванки и тогда ShellExecute отлично передаёт ему путь к плэйлисту: CurDir + ArtistBox + AlbumBox. Теперь проблема след.: чтобы нати папку Music и выкапывать оттуда значения для вышеупомянутых КомбоБоксов припахал первое попавшее под руку средство - DirectoryListBox1 (более подходящего метода вродь как не нашёл), но пока прога откатывалась на HDD - всё было ВэриКул, а вот как только итоговый вариант был записан на болванку .... Ни *.mp3 в TreeView1 не видно, фото артиста в Image1, ни ... потому что КомбоБоксы возвращают ' '. Ну, думаю Ща...
Короче - вот:
Код:
Procedure 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_ :
Код:
Level:= 0;
i:= Level;
repeat
s:= DirectoryListBox1.GetItemPath(i);
memo2.Lines.Add('s= ' + s);
inc (i);
until Pos ('Music', s) >0;
CurDir:= s + '\';
StrLCopy (buf, PChar(s), max_path);
for i := 0 to SizeOf(buf)do
if buf[i] = '\' then inc (Level);
memo2.Lines.Add('Level= ' + inttostr(Level));
memo2.Lines.Add('CurDir= ' + CurDir);
BoxChange (ArtistBox, CurDir, Level +1); // ниже папки Music
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 и Каролины, и Комиссара{окромя Дианы...}, системным и моим плэйером). Кто нить знает
в чём собака порылась? и как это дело объегорить?
Заранее благодарен