怀疑是递归的问题,但是自己找不出问题所在,当我当前界面中有opendialog控件,然后把opendialog.filename赋值给edit1.text后,用winexec调用播放器,虽然有播放列表的playlist.ini文件,但是不能播放. 谢达人指点啊,急
代码如下
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, MPlayer, StdCtrls, OleCtrls, RealAudioObjects_TLB,TLHelp32,
  jpeg, AMixer, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer,IdSocketHandle;type
  TForm1 = class(TForm)
    MediaPlayer1: TMediaPlayer;
    Panel1: TPanel;
    OpenDialog1: TOpenDialog;
    Button1: TButton;
    Memo1: TMemo;
    Timer1: TTimer;
    Image1: TImage;
    memo2: TMemo;
    MediaPlayer2: TMediaPlayer;
    Timer2: TTimer;
    IdUDPServer1: TIdUDPServer;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
  private
    { Private declarations }
  public
    procedure playmovie(s:string); //播放文件
    procedure Loadtext;    //加载播放列表
    //procedure muteav(mybool: boolean);
    { Public declarations }
  end;var
  Form1: TForm1;
  index,index1:integer;
  count:integer;
  ifplay:boolean;
  timeout:string;implementation{$R *.dfm}
procedure tform1.playmovie(s:string);
var
  rect:TRECT;
  extFiN:string;
begin
  RECT.Left:=0;
  RECT.Top:=0;
  RECT.Right:=633;
  RECT.Bottom:=481;  extFiN:= ExtractFileExt(s);
   try      mediaplayer1.Close;
      if(extFiN = '.jpg') or  (extFiN = '.JPG')  or
     (extFiN = '.bmp') or (extFiN = '.BMP')then  //处理图象
      begin
        Image1.Picture.LoadFromFile(s);
        if (ifplay=false) and (memo2.Lines.Count<>0) then
        begin
          mediaplayer1.FileName:='./media/'+memo2.Lines[0];  //´
          mediaplayer1.Open;
          mediaplayer2.TimeFormat:=tfMilliseconds;
          timer2.Interval:=mediaplayer1.Length;          ifplay:=true;
          mediaplayer1.Play;
          timer2.Enabled:=true;
        end;
        timer1.Interval:=strtoint(timeout)*1000;   //图片的显示时间
        timer1.Enabled:=true;
        exit;
      end
      else if (extFiN = '.mpeg') or (extFiN = '.avi') or (extFiN = '.wmv') or (extFiN = '.MPEG') or
      (extFiN = '.mpg')or (extFiN = '.MPG')OR (extFiN = '.AVI') or (extFiN = '.WMV') THEN
      BEGIN
      timer2.Enabled:=false;
      mediaplayer1.Close;
      mediaplayer2.FileName:=s;  //处理视频
      mediaplayer2.Open;
      mediaplayer2.DisplayRect:= RECT;
      mediaplayer2.TimeFormat:=tfMilliseconds;
      timer1.Interval:=mediaplayer2.Length;
      timer1.Enabled:=true;
      ifplay:=false;
      mediaplayer2.Play;
      END
      ELSE  begin
        if index<memo1.Lines.Count-1 then
        begin
          index:=index+1;
          playmovie('./media/'+memo1.Lines[index]);
        end
        else begin
          index:=0;
          playmovie('./media/'+memo1.Lines[index]);
        end;
      end;
    except
      timer1.Interval:=100;
      timer1.Enabled:=true;    end;end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  if opendialog1.Execute then
  begin
  playmovie(opendialog1.FileName);
  end;
end;
procedure tform1.Loadtext;
VAR
  f:Textfile;
  exTFin,s:string;
begin  if fileExists('./playlist.ini') then
  begin
    memo1.Lines.Clear;
    memo2.Lines.Clear;
    assignfile(f,'./playlist.ini');
    reset(f);
    readln(f,timeout);
    try
      while not Eof(f) do
      begin
        readln(f,s);
        if (s<>'END') and (fileExists('./media/'+s)) then
        begin
          exTFin:=ExtractFileExt(s);
          if (exTFin = '.mp3') or (exTFin = '.wav') or (exTFin = '.wma') or
          (exTFin = '.MP3') or (exTFin = '.WAV') or (exTFin = '.WMA')  THEN
          BEGIN
          memo2.Lines.Add(s);
          END
          else  memo1.Lines.Add(s);
        end;
      end;
    finally
      CloseFile(f);
    end;
    index:=0;
    index1:=0;
  end
  else close;
  if memo1.Lines.Count=0 then close;end;procedure TForm1.FormShow(Sender: TObject);begin
   form1.Left:=391;
  form1.Top:=151;
  Loadtext;
  playmovie('./media/'+memo1.Lines[index]);
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
  timer1.Enabled:=false;
  if index<memo1.Lines.Count-1 then
  begin
  index:=index+1;
   playmovie('./media/'+memo1.Lines[index]);
  end
  else begin
    index:=0;
    playmovie('./media/'+memo1.Lines[index]);
  end;end;procedure TForm1.FormCreate(Sender: TObject);begin
  //screen.Cursor :=crnone;
  ShowCursor(False);
  IdUDPServer1.DefaultPort:=9339;
  IdUDPServer1.Active:=true;
  form1.Left:=391;
  form1.Top:=151;
  ifplay:=false;
 // muteav(true);
end;procedure TForm1.Timer2Timer(Sender: TObject);
begin
  mediaplayer1.Close;
  if index1<memo2.Lines.Count-1 then      //循环播放音乐
  begin
  index1:=index1+1;
  mediaplayer1.FileName:='./media/'+memo2.Lines[index1];
   mediaplayer1.Open;
  timer2.Interval:=mediaplayer1.Length;
  end
  else begin
  index1:=0;
  mediaplayer1.FileName:='./media/'+memo2.Lines[index1];
  mediaplayer1.Open;
  timer2.Interval:=mediaplayer1.Length;
  end;
  mediaplayer1.Play;
end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var
received:string;
begin
  setlength(received,AData.size);
  Adata.Read(Pchar(received)^,AData.size);
  if received='Close' then
  application.Terminate;
end;end.