Gdzie jest błąd? [MediaPlayer + mp3]

0

Program ma odtwarzać mp3 a że piszę w D7 to używam MediaPlayer.
W założeniach jest:
-program ma sam wystartować jeżeli ilość w playliście > 0
-ma ort! odegrany utwór z playlisty
-jak odegra wszystko to czeka aż się coś pojawi w playliście

Napisałem kodzik i wali błędami przy przejściu do następnego utworu [choć nie zawsze].
Co jest nie tak?
Jak ustawić w object inspector żeby przy starcie nie musiało być wpisane na sztywno FileName?

procedure TForm1.Button1Click(Sender: TObject);  //odgrywanie
begin
  if ListBox1.Items.Count>0 then
begin
  MediaPlayer1.DeviceType:=dtAutoSelect;
  MediaPlayer1.FileName:=ListBox1.Items.Strings[0];
  MediaPlayer1.Open;
  MediaPlayer1.Play;
  ScrollBar1.Max:=MediaPlayer1.Length;;
  ListBox1.Items.Delete(0);
  end else
    Timer2.Enabled:=True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if ListBox1.Items.Count>0 then
  begin
    ScrollBar1.Position:=MediaPlayer1.Position;
    Label3.Caption:=ListBox1.Items.Strings[0];
    end;
      if MediaPlayer1.Position=MediaPlayer1.Length then
        begin
          MediaPlayer1.Stop;
          MediaPlayer1.Close;
          Button1.Click;  //play
          end;
end;

Proszę o pomoc
Grzegorz

0

zrób drugiego timera pierwszemu ustaw Enabled na False, w drugim daj:

procedure TForm1.Timer2Timer(Sender: TObject);
begin
if ListBox1.Items.Count>0 then Begin
Button1.Click;
Timer2.Enabled:=False;
end;

A do kodu buttona dodaj

 Timer1.Enabled:=True;

U mnie to działa, żadnych błędów

0

sorki że nie podałem drugiego Timera ale mam go tylko był True, no i Timer1.Enabled:=True też nie było :) Dzięki

A co do drugiego pytania to pomoże mi ktoś?

Jak zostawie dla MediaPlayer w object inspector puste pole FileName to się wywala przy starcie, jak to obejść?

0
d.grzes napisał(a)

A co do drugiego pytania to pomoże mi ktoś?

Jak zostawie dla MediaPlayer w object inspector puste pole FileName to się wywala przy starcie, jak to obejść?

Daj w OnCreate lub w OnShow zeby sobie cos tam ustawial jako FileName i juz

0

Daj w OnCreate lub w OnShow zeby sobie cos tam ustawial jako FileName i juz

Tak też zamiarowałem :) może nawet jakiś plik do zasobów programu, jakieś bip krótkie, ale ciekaw byłem czy nie ma innego sposobu.

0

Jak playlista jest pusta to wywala lawinę komunikatów: NO MCI DEVICES OPEN

procedure TForm1.Button1Click(Sender: TObject);  //odgrywanie
begin
  //Timer1.Enabled:=True;
  //if ListBox1.Items.Count>0 then
begin
  Timer1.Enabled:=True;
  MediaPlayer1.DeviceType:=dtAutoSelect;
  MediaPlayer1.FileName:=ListBox1.Items.Strings[0];
  MediaPlayer1.Open;
  MediaPlayer1.Play;
  Label2.Caption:=MediaPlayer1.FileName;
  ListBox1.Items.Delete(0);
  //end else
    //Timer2.Enabled:=True;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);

begin
  if ListBox1.Items.Count>0 then
  begin
    Label2.Caption:=MediaPlayer1.FileName;
    end;
      if MediaPlayer1.Position=MediaPlayer1.Length then
        begin
          MediaPlayer1.Stop;
          MediaPlayer1.Close;
          Button1.Click;  //play
          end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
  if ListBox1.Items.Count>0 then
  begin
  Timer2.Enabled:=False;
  Button1.Click; //play
  end;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1