Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2010, 15:40   #1
mma
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 22
По умолчанию играть сначала 1.wav потом 2.wav

Здравствуйте!
Пишу программку, которая должна пользователю выдавать голосовые сообщения и команды.
Никак не пойму как проиграть при нажатии кнопки сначала первый потом второй файл.
Цитата:
mediaplayer1.filename:='1.wav';
open;
play;
mediaplayer1.filename:='2.wav';
open;
play;
end;
так он играет только последний, понятно почему.
К сожалению не нашел похожего примера, помогите пожалуйста.
СПАСИБО!

Последний раз редактировалось mma; 21.12.2010 в 15:41. Причина: код
mma вне форума Ответить с цитированием
Старый 21.12.2010, 16:27   #2
nXs
Форумчанин
 
Регистрация: 26.02.2010
Сообщений: 126
По умолчанию

Как вариант:
Код:
mediaplayer1.filename:='1.wav';
open;
play;
и в таймере
Код:
if Mediaplayer1.position=mediaplayer1.length
then
mediaplayer1.filename:='2.wav';
open;
play;
end;
nXs вне форума Ответить с цитированием
Старый 21.12.2010, 18:10   #3
mma
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 22
По умолчанию

не помогло.
Зацикливает или первый или второй файл...
mma вне форума Ответить с цитированием
Старый 21.12.2010, 20:13   #4
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

можно попробовать после play делат sleep(длительность звукового файла в мс) а потом stop
UltimaBeaR вне форума Ответить с цитированием
Старый 21.12.2010, 21:45   #5
mma
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 22
По умолчанию

Так дает только при повторном нажатии на кнопку, а нужно с одног щелчка
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Timer1.Enabled:=True;
 ListBox1.Items.Add('J:\звуки\б.wav');
  ListBox1.Items.Add('J:\звуки\а.wav');
 If Label2.Caption='Label2' then
MediaPlayer1.FileName:=ListBox1.Items[0];// 'J:\звуки\а.wav';
MediaPlayer1.Open;
MediaPlayer1.Play;
If Label2.Caption='0:02' then
 MediaPlayer1.FileName:=ListBox1.Items[1];// 'J:\звуки\а.wav';
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
mma вне форума Ответить с цитированием
Старый 21.12.2010, 21:48   #6
mma
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 22
По умолчанию

вообще БРЕД какой то, можно же наверно это сделать, и на много проще???!!!
mma вне форума Ответить с цитированием
Старый 21.12.2010, 22:43   #7
mma
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 22
По умолчанию

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:=True;
  if Mediaplayer1.position=mediaplayer1.length
then
MediaPlayer1.Stop;
mediaplayer1.filename:='J:\звуки\а.wav';
 MediaPlayer1.Open;
MediaPlayer1.Play;
Timer1.Enabled:=False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled:=True;
 mediaplayer1.filename:='J:\звуки\б.wav';
 MediaPlayer1.Open;
MediaPlayer1.Play;
end;
Вот так работает, каким то чудом!
Ну неужели код не может быть проще???
mma вне форума Ответить с цитированием
Старый 22.12.2010, 00:37   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

http://programmersforum.ru/showthread.php?t=40983
посмотрите внимательно пример реализации плейлиста.(в вашем случае это плейлист и есть)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.12.2010, 22:08   #9
mma
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 22
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, MPlayer, ExtCtrls, mmsystem;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    MediaPlayer1: TMediaPlayer;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure MediaPlayer1Notify(Sender: TObject);
    procedure Button2Click(Sender: TObject);

  private
    { Private declarations }
     I:INTEGER;
       procedure PlayMass(Ind:integer);
 
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.PlayMass(Ind:integer);
begin
if ListBox1.Items.Count>=Ind then begin
with MediaPlayer1 do
begin
Notify:=false;
if ind<ListBox1.Items.Count then begin
Filename:=ListBox1.Items.Strings[Ind];
Open;
Play;
Notify:=true;
end;
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ListBox1.Items.Add('J:\звуки\д.wav');
  ListBox1.Items.Add('J:\звуки\р.wav');
   ListBox1.Items.Add('J:\звуки\я.wav');
 i:=0;
PlayMass(i);
end;


procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
 if MediaPlayer1.Mode=mpPlaying then
begin
Inc(i);
PlayMass(i);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ListBox1.Clear;
end;

end.
Подскажите пожалуйста, почему этот пример при открытии и нажатии button1- выполняется каждый раз поразному??? То 3 файла отиграет, то 2, то 1 ???
Как его исправить?
mma вне форума Ответить с цитированием
Старый 23.12.2010, 20:04   #10
mma
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 22
По умолчанию

Спасибо всем кто попытался помоч и кто помог!!!
Тема разобрана.
просто вместо notify, делаем timer.
mma вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с .wav dampirik Общие вопросы .NET 8 17.12.2010 00:07
Конвертация аудиофайлов WAV -> WAV namestnik Помощь студентам 2 27.05.2009 23:05
Wav-ы в *.res Altera Общие вопросы Delphi 12 22.09.2008 19:01
Проиграть wav Altera Мультимедиа в Delphi 4 31.05.2008 10:34
Play Wav DeDoK Общие вопросы Delphi 2 28.04.2008 11:07