我做了一个简单的媒体播放器,可是老是有三处报错,各位大虾帮帮忙吧![:(]
出错的是再45,66,127[Error] Unit1.pas(66): Missing operator or semicolon
[Warning] Unit1.pas(127): Combining signed and unsigned types - widened both operands
[Error] Unit1.pas(45): Unsatisfied forward or external declaration: 'TForm1.DomediaOpen'
unit Unit1;interfaceuses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls, ComCtrls, MPlayer,buttons,Mmsystem;type
 TForm1 = class(TForm)
   MediaPlayer1: TMediaPlayer;
   TrackBar1: TTrackBar;
   Timer1: TTimer;
   OpenDialog1: TOpenDialog;
   Label1: TLabel;
   Label2: TLabel;
   Label3: TLabel;
   Label4: TLabel;
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   Button4: TButton;
   TrackBar2: TTrackBar;
   TrackBar3: TTrackBar;
   TrackBar4: TTrackBar;
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
   procedure FormCreate(Sender: TObject);
   procedure Button4Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure TrackBar2Change(Sender: TObject);
   procedure TrackBar3Change(Sender: TObject);
   procedure TrackBar1Change(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
   procedure MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
     var DoDefault: Boolean);
 private
   { Private declarations }
 public
   { Public declarations }
 //音量控制中用到的全局变量
 vol:longint;
 //程序中用到的自定义函数
 procedure DomediaOpen;
 end;var
 Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 close;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
 waveoutgetvolume(0,@vol);
 trackbar2.Position:=hi(vol);//设置左声道音量
 trackbar3.Position:=hi(vol shr 16);//设置右声道音量
 trackbar1.Position:=hi(vol)or hi(vol shr 16)
 TrackBar2.Max:=trackbar1.Position;
 TrackBar3.Max:=trackbar1.Position;
end;procedure TForm1.Button4Click(Sender: TObject);
begin
 if not opendialog1.Execute  then
   exit;
 mediaplayer1.FileName:=opendialog1.FileName;
 domediaopen;
 button1.Click;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
 trackbar4.Position:=0;
 button2.Enabled:=false;
 button3.Enabled:=false;
 button1.Enabled:=false;
 mediaplayer1.Stop;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
 mediaplayer1.Pause;
 button3.Enabled:=not  button3.Enabled;
 button1.Enabled:=not  button1.Enabled;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
 if mediaplayer1.Mode=mppaused then
 begin
   button1.Enabled:=false;
   button2.Enabled:=false;
   button3.Enabled:=false;
   mediaplayer1.Resume;
   timer1.Enabled:=true;
 end
 else
 begin
   mediaplayer1.Open;
   trackbar4.Max:=mediaplayer1.Length;
   domediaopen;
   mediaplayer1.Play;
   timer1.Enabled:=false;
   if mediaplayer1.Mode<>mpplaying then
   mediaplayer1.Play;
   button1.Enabled:=false;
   button2.Enabled:=true;
   button3.Enabled:=true;
 end
end;procedure TForm1.TrackBar2Change(Sender: TObject);
var
 pos,vol:longint;
begin//设置左声道的音量
 trackbar2.Max:=trackbar1.Position;
 pos:=trackbar2.Position;
 waveoutgetvolume(0,@vol);
 vol:=vol and  $ffff0000  or (pos shl 8);
 waveoutsetvolume(0,vol);
end;procedure TForm1.TrackBar3Change(Sender: TObject);
var
 pos,vol:longint;
begin //设置右声道的音量
 trackbar3.Max:=trackbar1.Position;
 pos:=trackbar3.Position;
 waveoutgetvolume(0,@vol);
 vol:=vol and $0000ffff or (pos shl 24);
 waveoutsetvolume(0,vol);end;procedure TForm1.TrackBar1Change(Sender: TObject);
var
 pos,vol:longint;
begin
 pos:=trackbar1.Position;
 vol:=(pos shl 8)or(pos shl 24);
 waveoutsetvolume(0,vol);end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if mediaplayer1.Mode=mpplaying then
 begin
   trackbar4.Position:=mediaplayer1.Position; end
 else
 begin
   if mediaplayer1.Mode=mpstopped then
   button2click(self);
   timer1.Enabled:=false;
 end
end;procedure TForm1.MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
 var DoDefault: Boolean);
begin
 case button of
 btplay:
 begin
   caption:='playing';
 end;
 btpause:
 begin
   caption:='paused';
 end;
 btstop:
 begin
   caption:='stopped';
 end;
 btnext:
 begin
   caption:='next';
 end;
 btprev:
 begin
   caption:='previous';
 end;
 btstep:
 begin
   caption:='step';
 end;
 btback:
 begin
   caption:='back';
 end;
 btrecord:
 begin
   caption:='record';
 end;
 bteject:
 begin
   caption:='eject';
 end
end;
end;
end.  

解决方案 »

  1.   

    晕倒,这种低级错误还好意思
    前面的几个错误是这些地方少了分号;导致的语法错误。
    最后的错误是DomediaOpen根本就没有定义。
      

  2.   

    {
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     waveoutgetvolume(0,@vol);
     trackbar2.Position:=hi(vol);//设置左声道音量  trackbar3.Position:=hi(vol shr 16);//设置右声道音量
     3trackbar1.Position:=hi(vol)or hi(vol shr 16)
     TrackBar2.Max:=trackbar1.Position;
     TrackBar3.Max:=trackbar1.Position;
    end;}
    ====================================================
    改为:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     waveoutgetvolume(0,@vol);
     trackbar2.Position:=hi(vol);//设置左声道音量
     trackbar3.Position:=hi(vol shr 16);//设置右声道音量
     trackbar1.Position:=hi(vol)or hi(vol shr 16);/////////////??
     TrackBar2.Max:=trackbar1.Position;
     TrackBar3.Max:=trackbar1.Position;
    end;
      

  3.   

    这里我已经改了,但是这一处vol:=vol and  $ffff0000  or (pos shl 8);我 感觉没错呀!
    还有那个函数究竟是怎么定义的呀!
    太郁闷了,帮忙呀!
    好人做到底呀!
      

  4.   


                     UUUU      
          UUUUUUUUUUUUUUUUUUUUUUUU       
      UUUUUUUUUU     UUUU           
         UUUU     UUUU           
         UUUU  UUUUUUUUUUUUUUUUUUUU      
         UUUU  UUUU     UUUU       
         UUUU  UUUU     UUUU       
         UUUU  UUUU  UUUU UUUU       
         UUUU  UUUU  UUUU UUUU       
         UUUU  UUUU  UUUU UUUU       
         UUUU  UUUU  UUUU UUUU       
         UUUU  UUUU  UUUU UUUU       
         UUUU  UUUU UUUUUU UUUU       
         UUUU     UUUUUU          
       UUUUUU      UUUUUUUUUU        
               UUUU   UUUUUU      
             UUUUUU     UUUU      
            UUUU