Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Tocar la Cancion siguiente con el MediaPlayer (https://www.clubdelphi.com/foros/showthread.php?t=50848)

pockelsm3 29-11-2007 17:55:47

Tocar la Cancion siguiente con el MediaPlayer
 
Buenas, tengon un inconveniente con una applicacion que estoy desarrollando para tocar musica, videos y peliculas.

mi problema consiste en que cuando quiero avanzar a la siguiente mientras ya esta tocando alguna, me da un el siguiente error

MCIDiviceError with message 'cannot determine the divice type from the given filename extension' :confused:

Este es el codigo que estoy utilizando

Código Delphi [-]
procedure TFMain.MPSoundNotify(Sender: TObject);
begin
  if MPSound.Mode = mpPlaying then
    begin
      MPSound.Close;
      TCanciones.DisableControls;
      TCanciones.First;
      TCanciones.Delete;
      TCanciones.EnableControls;
      MPSound.FileName := TCancionesRUTA.Value;
      MPSound.Open;
      MPSound.Play;
    end;
end;

pockelsm3 29-11-2007 18:00:30

Correcion publicacion anterior
 
:eek:Disculpen que el codigo anterior lo utiliza para que pase de una cancion a otra, cuando la que estaba sonando termine.

este es el codigo correcto que estoy utilizando

procedure TFMain.NextClick(Sender: TObject);
begin
MPSound.Stop;
MPSound.Close;
TCanciones.DisableControls;
TCanciones.First;
TCanciones.Delete;
TCanciones.EnableControls;
MPSound.FileName := TCancionesRUTA.Value;
MPSound.Open;
MPSound.Play;
end;

Gracias de antemano

enecumene 29-11-2007 18:46:57

Hola, una pregunta, cual es la funcion del delete que estas haciendo, borras un dato en la tabla canciones?, no le veo sentido, intenta sin el delete:

Código Delphi [-]
procedure TFMain.NextClick(Sender: TObject);
begin
      MPSound.Stop;
      MPSound.Close;
      TCanciones.DisableControls;
      TCanciones.First;
      TCanciones.EnableControls;
      MPSound.FileName := TCancionesRUTA.Value;
      MPSound.Open;
      MPSound.Play;
end;

Saludos.

pockelsm3 29-11-2007 23:43:24

Aclaratoria delete
 
Gracias por responder

pero si te fijas en el codigo fuente siempre estoy mandado a tocar el primer registro de la tabla, que por eso mando a posicionarse en el primer registro para poder eliminarlo para luego tocar el nuevo registro posicionado en el primer lugar

Hola_mundo 06-12-2007 18:27:24

Yo resoloví un problema parecido de la siguiente manera: cree una tabla con el Data Base desktop en donde en uno de los campos guardo como un Tipo Alpha el Path donde se encuentra el tema. Y en el preimero de los dos Campos creados coloco un "ID" para Identificar cada path (El campo "ID" es un numero del tipo Long Integer).
Con este Campo "Id" logre , como veras en la primera parte del codigo, que cuando pulses el boton "siguiente" o "next" y estes parado en el ultimo registro de la tabla, automaticamente pases al primero.

Código Delphi [-]
procedure TFormTrack.SpeedButton2Click(Sender: TObject);
begin  // En esta parte detecto si es el ultimo registro y paso al primero.
  if DBGRID1.Columns.Items[0].Field.ASinteger = 13 then begin   //Esta linea apunta a una columna del DBGrid1 donde se encuentra el nuero "ID" del tema o track, el cual convierto del tipo TField a un INTEGER y lo comparo con el ultimo registro de la tabla (en mi caso el N° 13)
     query1.First; // Si es el ultimo, paso al primero.
     MediaPlayer1.FileName := DBGRID1.Columns.Items[1].Field.ASSTRING;      //Esta linea apunta a una columna del DBGrid1 donde se encuentra el path del tema o track, el cual convierto del tipo TField a un String, para que sea compatible con la propiedad MediaPlayer1.FileName
     MediaPlayer1.Open;
     MediaPlayer1.Play;
  end    
   else  //Sino no es el ultimo, paso al sigueinte.
      QUERY1.Next; 
      MediaPlayer1.FileName := DBGRID1.Columns.Items[1].Field.ASSTRING;
      MediaPlayer1.Open;
      MediaPlayer1.Play;
 end;



Espero que te sirva....tiene muchas explicaiones....peroes facil de entender...y no son muhcas lineas de codigo, son solo 9 y contadas.

Hola_mundo 06-12-2007 18:32:19

Yo resoloví un problema parecido de la siguiente manera: cree una tabla con el Data Base desktop en donde en uno de los campos guardo como un Tipo Alpha el Path donde se encuentra el tema. Y en el preimero de los dos Campos creados coloco un "ID" para Identificar cada path (El campo "ID" es un numero del tipo Long Integer).
Con este Campo "Id" logre , como veras en la primera parte del codigo, que cuando pulses el boton "siguiente" o "next" y estes parado en el ultimo registro de la tabla, automaticamente pases al primero.

Código Delphi [-]
procedure TFormTrack.SpeedButton2Click(Sender: TObject);
begin  // En esta parte detecto si es el ultimo registro y paso al primero.
 if DBGRID1.Columns.Items[0].Field.ASinteger = 13 then begin   //Esta linea apunta a una columna del DBGrid1 donde se encuentra el nuero "ID" del tema o track, el cual convierto del tipo TField a un INTEGER y lo comparo con el ultimo registro de la tabla (en mi caso el N° 13)
  query1.First; // Si es el ultimo, paso al primero.
  MediaPlayer1.FileName := DBGRID1.Columns.Items[1].Field.ASSTRING;      //Esta linea apunta a una columna del DBGrid1 donde se encuentra el path del tema o track, el cual convierto del tipo TField a un String, para que sea compatible con la propiedad MediaPlayer1.FileName
  MediaPlayer1.Open;
  MediaPlayer1.Play;
  end    
   else  //Sino no es el ultimo, paso al sigueinte.
     QUERY1.Next; 
     MediaPlayer1.FileName := DBGRID1.Columns.Items[1].Field.ASSTRING;
     MediaPlayer1.Open;
     MediaPlayer1.Play;
 end;


Espero que te sirva....tiene muchas explicaiones....peroes facil de entender...y no son muhcas lineas de codigo, son solo 9 y contadas.


La franja horaria es GMT +2. Ahora son las 05:33:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi