Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
 
_NE_KAKIX_IMEN_
-1 / 3 / 1
Регистрация: 20.05.2015
Сообщений: 445
1

Воспроизвести песни через список

01.06.2015, 01:21. Просмотров 401. Ответов 3
Метки нет (Все метки)

Народ хоть падай и плач((( помогите ))) мне надо воспроизвести песни через список что бы они автоматом переключались друг за другом((( я вообще уже 6 день думаю и не как осилить не могу **** помогите ааа будьте добры уже ночами не сплю надо написать проект! если у кого то есть че то на уме давайте подумаем вместе)))

кусок кода

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
procedure PlayTrack(N:integer); 
...
 
procedure TForm1.Play;
var s:string;
begin
  UpdateCurRepeat;
  s:= ExtractFilePath(ParamStr(0))+ lst1.Items[FCurTrack];
  Fstream:= Bass_streamcreatefile(false, PChar(s),0,0,BASS_UNICODE or BASS_STREAM_AUTOFREE);
  //PlaySync:= BASSMOD_MusicSetSync(BASS_SYNC_END, 0, @ChannelEndSync, 0); //вот здесь ошибка я не знаю как объявлять эту функцию((
Bass_channelplay(Fstream,false);
end;                                            
 
procedure TForm1.PlayTrack(N: integer);
var s:string;
begin
if fstream<>0 then //если stream=0 тогда очищаем поток
Bass_StreamFree(fstream);  //поток очищается
 
if N>=List.Count then exit;//если номер строки больше лист тогда выход
 
if BASS_ChannelIsActive(fstream)<>BASS_ACTIVE_STOPPED then
Bass_channelstop(fstream);
s:=List[N];
fstream:= Bass_streamcreatefile(false, PChar(s),0,0,0);
//PlaySync := BASS_ChannelSetSync(Fstream, BASS_SYNC_END, 0, ChannelEndSync, nil);
begin
BASS_ChannelRemoveSync(fstream, PlaySync);// Если файл уже играет, то отключаем его
Bass_channelplay(fstream,false);
end;   end; 
 
procedure SyncProc(handle: HSYNC; channel, data: DWORD; user: Pointer); stdcall;
begin
  Form1.CurRepeat:=Form1.CurRepeat+1;
  Form1.Stop;
  if Form1.CurRepeat>=Form1.RepeatCount then
    Form1.Next;
  if Form1.CurRepeat<Form1.RepeatCount then
  Bass_channelplay(fstream,false);
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2015, 01:21
Ответы с готовыми решениями:

проигрывание песни
помогите мне создать прогу в которой при запуске будет проигрываться песня,я пробовал через MPlayer...

Шипение вместо песни
Пытаюсь создать плеер с помощью bass библиотеки. Почему-то вместо песни какое-то странное шипение....

Старые песни о главном: Медиаплеер
В общем ситуация такая, есть очень кривой медиаплеер, собранный на основе исходников,примеров и...

Bass.dll | Онлайн радио | Название песни
Вот моя процедура получения названия песни: meta переменная типа PAnsiChar meta :=...

Как с помощью TRACKBAR изменять положение трека(песни)
Всем привет! Подскажите некоторые вопросы... 1.Как с помощью TRACKBAR изменять положение...

3
Mawrat
12827 / 5735 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
02.06.2015, 15:34 2
Цитата Сообщение от Не_Профи Посмотреть сообщение
мне надо воспроизвести песни через список что бы они автоматом переключались друг за другом
Переключение можно в обработчике тиков таймера сделать. На форму надо положить TTimer, задать его интервал, например, в половину секунды и в обработчике OnTimer написать переключатель по списку:
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  //Если есть действующий поток.
  if FStream <> 0 then
    //Если воспроизведение дошло до конца потока.
    if BASS_ChannelGetPosition(FStream, 0) = BASS_ChannelGetLength(FStream, 0) then
    begin
      //Здесь код переключения по списку.
      //...
    end
end;
0
_NE_KAKIX_IMEN_
-1 / 3 / 1
Регистрация: 20.05.2015
Сообщений: 445
02.06.2015, 17:29  [ТС] 3
Спс попробую! а как прикрепить Проект на этот сайт??

Добавлено через 14 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 
if FStream <> 0 then  //Если есть действующий поток.
      //Если воспроизведение дошло до конца потока.
if BASS_ChannelGetPosition(FStream, 0) = BASS_ChannelGetLength(FStream, 0) then
begin
        //Здесь код переключения по списку.
  List:=TStringList.Create;
 
  List.Add('.mp3');
  List.Add('.mp3');
  List.Add('.mp3');  
  Bass_channelplay(Fstream,false)
 
end
как то так я нахимичил получается та же самая песня зациклено играет! а переключения нет((( по списку!
0
_NE_KAKIX_IMEN_
-1 / 3 / 1
Регистрация: 20.05.2015
Сообщений: 445
08.06.2015, 06:27  [ТС] 4
Тема ЗАКРЫТА, разобрался, спс за помощь)))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2015, 06:27

Генератор карт через структуру (список), странная ошибка, не понимаю в чём дело
Есть значит у меня структура, в которой храниться Id, вес карты, и ссылка на картинку в программе....

Воспроизвести писк на системном динамике
Как сделать гудок на спикере? Нужно чтоб пищал именно спикер на материнской плате, а не на звуковой...

Как воспроизвести видео в Delphi?
Посмотрел очень много примеров, информации и не чего не помогло, пробую запустить пересоздать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru