我用了delphi的TMediaPlayer控件做一个简单的播放器,想在窗体上以mm:ss方式显示当前播放歌曲的总长度,但是总显示的不正确,代码如下:  
 
type   MSFRec  =  record  
       Minutes:  byte;  
       Seconds:  byte;  
       Frames:  byte;  
       NotUsed:  byte;  
   end;  
 
procedure  TPlayForm.MyPlay()
 begin  
       MediaPlayer1.TimeFormat  :=  tfMSF;  
       MediaPlayer1.DeviceType  :=  dtAutoSelect;  
       MediaPlayer1.FileName  :=  'd:\test.mp3';  
       MediaPlayer1.Open;  
       with    MSFRec(MediaPlayer1.Length)  do  
       begin  
           GradProgress1.MaxValue  :=  MediaPlayer1.Length;  
           Label3.Caption  :=  'Total:  '+IntToStr(Minutes)+':'+IntToStr(Seconds);//?????此处时间显示不对??????比如显示为239:34.  
       end;  
   MediaPlayer1.Play;  
end;  
 
请指教错误在哪儿?

解决方案 »

  1.   

    MediaPlayer.TimeFormat := tfFrames;
      ShowMessage('Number of frames = ' +
        IntToStr(MediaPlayer .Length));
      MediaPlayer .TimeFormat := tfMilliseconds;
      ShowMessage('Number of milliseconds = ' +
                  IntToStr(MediaPlayer .Length));
      

  2.   

    试了,tfMSF,tfFrames,tfMilliseconds三种格式时MediaPlayer.length都是一样的
    奇怪了
      

  3.   

    我也遇见了这样的问题,我是将时间格式化成tfHms然后参照联机帮助中的例子用一个记录集来得到,但是始终是不行。
      

  4.   

    顺便说以下mediaplayer控件不支持mp3
      

  5.   

    因为你电脑里面装了别的可以放mp3的播放器吧。我记得它真的是不支持mp3的,不过我刚才试了一下确实可以放