怀疑是递归的问题,但是自己找不出问题所在,当我当前界面中有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.
代码如下
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.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货