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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2009, 21:21   #1
Степа Верхозин
 
Регистрация: 08.05.2009
Сообщений: 9
По умолчанию Время проигрывания Delphi

Здравствуйте!
Я делаю МР3 плеер, использую mediaplayer.
Такой вопрос:как синхронизировать время выводимое на лейбл и реальное время воспризведения? То есть, если песня поигрывает до пятой секунды и я сразу же перематываю в конец, то время выводимое на лэйбл продолжится с той же пятой секунды, а надо чтобы показывалось реальное время трека. Объяснил коряво, но надеюсь вы поняли)
И второй вопрос: как сделать случайное воспроизведение треков?
Заранее спасибо)
Вот код:

Код:
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  volume := 6500* (TrackBar1.Max - TrackBar1.Position);
  volume := volume +   (volume shl 16);
  waveOutSetVolume(WAVE_MAPPER,volume);
end;


procedure TForm1.TrackBar2Change(Sender: TObject);
begin
If TrackBar2.Position<>mediaplayer1.Position then
begin
mediaplayer1.Position:=TrackBar2.Position;
mediaplayer1.Play;
end;
end;

// воспроизвести композицию,
// название которой выделено
// в списке ListBox1
procedure TForm1.Play;
begin
  Timer1.Enabled := False;
  Label1.Caption:=ListBox1.Items[ListBox1.itemIndex];
  MediaPlayer1.FileName := SoundPath + ListBox1.Items[ListBox1.itemIndex];

  try
   Mediaplayer1.Open;
  except
    on EMCIDeviceError do
      begin
        ShowMessage('Ошибка обращения к файлу '+
                     ListBox1.Items[ListBox1.itemIndex]);
        SpeedButton2.Down := False;
        exit;
      end;
  end;
  MediaPlayer1.Play;
  min :=0;
  sec :=0;
  Timer1.Enabled := True;
  SpeedButton2.Hint := 'Stop';
end;

// сигнал от таймера
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  // изменить счетчик времени
  if sec < 59
    then inc(sec)
    else begin
      sec :=0;
      inc(min);
    end;

  // вывести время воспроизведения
  Label2.Caption := IntToStr(min)+':';
  if sec < 10
    then Label2.Caption :=
           Label2.Caption +'0'+ IntToStr(sec)
    else Label2.Caption :=
           Label2.Caption + IntToStr(sec);

  // если воспроизведение текущей композиции
  // не завершено
  if MediaPlayer1.Position < MediaPlayer1.Length
    then exit;

  // воспроизведение текущей композиции
  // закончено
  Timer1.Enabled := False; // остановить таймер
  MediaPlayer1.Stop;       // остановить плеер

  if ListBox1.ItemIndex < ListBox1.Count // список не исчерпан
  then begin
        ListBox1.ItemIndex := ListBox1.ItemIndex + 1;
        Play;
       end ;

if mediaplayer1.FileName<>'' then
begin
TrackBar2.Max:=mediaplayer1.Length;
TrackBar2.Position:=mediaplayer1.Position;
end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
if mediaplayer1.FileName<>'' then
begin
TrackBar2.Max:=mediaplayer1.Length;
TrackBar2.Position:=mediaplayer1.Position;
end;
end;

// Щелчок на кнопке Папка
// Выбрать папку, в которой находятся MP3 файлы
procedure TForm1.SpeedButton4Click(Sender: TObject);
var
  Root: string;      // корневой каталог
  pwRoot : PWideChar;
  Dir: string;
begin
  Root := ''; // корневой каталог - папка Рабочий стол
  GetMem(pwRoot, (Length(Root)+1) * 2);
  pwRoot := StringToWideChar(Root,pwRoot,MAX_PATH*2);
  if not SelectDirectory('Выберите папку', pwRoot, Dir)
     then Dir :=''
     else Dir := Dir+'\';

  // каталог, в котором находятся MP3 файлы выбран
  SoundPath := Dir;
  PlayList(SoundPath);
end;

end.

Последний раз редактировалось Степа Верхозин; 25.11.2009 в 21:24.
Степа Верхозин вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
компонент проигрывания mid beegl Компоненты Delphi 2 28.06.2009 20:44
Время нажатия на кнопку мыши(Время реакции) Кирилл13 Помощь студентам 1 11.04.2009 19:41
Скорость проигрывания Bigtyoma Общие вопросы Delphi 0 01.10.2008 08:07
Скорость проигрывания Bigtyoma Мультимедиа в Delphi 0 30.09.2008 15:57
Нужна функция для проигрывания MP3 EniSh Общие вопросы Delphi 6 29.06.2008 01:08