I ilovedelphi3 Unregistered / Unconfirmed GUEST, unregistred user! 1999-06-05 #1 各位朋友,你们好! 能否给在下一个关于“一个MID文件播放完毕后,紧接着又播放 另一个MID文件”的例子程序? 多谢大家了!
A Another_eYes Unregistered / Unconfirmed GUEST, unregistred user! 1999-06-05 #2 var midiname: integer; procedure TForm1.button1click(sender: TObject); begin midiname := 1; with mediaplayer1do begin notify := true; devicetype := dtSequencer; filename := inttostr(midiname)+'.mid'; play; end; end; procedure TForm1.MediaPlayer1Notify(Sender: TObject); begin with mediaplayer1do begin inc(midiname); if fileExists(inttostr(midiname+'.mid') then begin filename := inttostr(midiname)+'.mid'; nofity := true; play; end; end; end;
var midiname: integer; procedure TForm1.button1click(sender: TObject); begin midiname := 1; with mediaplayer1do begin notify := true; devicetype := dtSequencer; filename := inttostr(midiname)+'.mid'; play; end; end; procedure TForm1.MediaPlayer1Notify(Sender: TObject); begin with mediaplayer1do begin inc(midiname); if fileExists(inttostr(midiname+'.mid') then begin filename := inttostr(midiname)+'.mid'; nofity := true; play; end; end; end;
I ilovedelphi3 Unregistered / Unconfirmed GUEST, unregistred user! 1999-06-06 #3 朋友,你好! 谢谢你个的程序。只是程序中的 filename := inttostr(midiname)+'.mid'; 这句我不太明白意思,望解释下吧。 还有,我想用 sAppPath := ExtractFilePath(Application.ExeName); mediaplayer1.filename := sAppPath + 'XXX.mid'; 语句,但是我无法写程序,还望指定。 另外,您程序中好象少了OPEN语句。
朋友,你好! 谢谢你个的程序。只是程序中的 filename := inttostr(midiname)+'.mid'; 这句我不太明白意思,望解释下吧。 还有,我想用 sAppPath := ExtractFilePath(Application.ExeName); mediaplayer1.filename := sAppPath + 'XXX.mid'; 语句,但是我无法写程序,还望指定。 另外,您程序中好象少了OPEN语句。
A Another_eYes Unregistered / Unconfirmed GUEST, unregistred user! 1999-06-06 #4 inttostr(midiname)+'.mid';我只是假设你有一批midi文件名称叫1.mid, 2.mid, ... 只是说明用法, 并不是例子程序. 你的要求也很简单, 建一个const数组保存你需要播放的midi文件名. 然后设置一个索引变量, 每次 OnNofity时索引+1供下次检索需要播放的文件名(当然还得加上边界检查, 比如超过数组长度时 设置回1) 我原来就是用这方法放背景音乐的, 两段midi之间连接很光滑, 听不出停顿.(我后来还把midi放 进了exe文件)
inttostr(midiname)+'.mid';我只是假设你有一批midi文件名称叫1.mid, 2.mid, ... 只是说明用法, 并不是例子程序. 你的要求也很简单, 建一个const数组保存你需要播放的midi文件名. 然后设置一个索引变量, 每次 OnNofity时索引+1供下次检索需要播放的文件名(当然还得加上边界检查, 比如超过数组长度时 设置回1) 我原来就是用这方法放背景音乐的, 两段midi之间连接很光滑, 听不出停顿.(我后来还把midi放 进了exe文件)
Y yeah Unregistered / Unconfirmed GUEST, unregistred user! 1999-06-07 #5 我临时写了一个,已测试通过。 Var i:integer; procedure TForm1.FormCreate(Sender: TObject); begin With listbox1.Itemsdo Clear; AddMidifile; mediaplayer1.DeviceType:=dtAutoselect; I:=0; end; procedure TForm1.AddMidiFile; var Midifile:TSearchRec; SPath:String; begin SPath:=ExtractfilePath(ParamStr(0)); if findFirst(sPath+'/*.mid',faAnyfile,midifile)=0 then begin listbox1.items.add(midifile.name); while findnext(midifile)=0do Add(Midifile.name) findClose(MIdifile); end; end; procedure TForm1.Button1Click(Sender: TObject); begin if i<=listbox1.Items.Count-1 then listbox1.ItemIndex:=i else begin MediaPlay1.Close; exit; end; With MediaPlayer1do begin FileName:=listbox1.Items[listbox1.itemindex]; Open; Play; end; end; procedure TForm1.MediaPlayer1Notify(Sender: TObject); begin if MediaPlayer1.Mode=mpStopped then begin Inc(I); Button1Click(Sender); end; end; end. 这样有50分吗?
我临时写了一个,已测试通过。 Var i:integer; procedure TForm1.FormCreate(Sender: TObject); begin With listbox1.Itemsdo Clear; AddMidifile; mediaplayer1.DeviceType:=dtAutoselect; I:=0; end; procedure TForm1.AddMidiFile; var Midifile:TSearchRec; SPath:String; begin SPath:=ExtractfilePath(ParamStr(0)); if findFirst(sPath+'/*.mid',faAnyfile,midifile)=0 then begin listbox1.items.add(midifile.name); while findnext(midifile)=0do Add(Midifile.name) findClose(MIdifile); end; end; procedure TForm1.Button1Click(Sender: TObject); begin if i<=listbox1.Items.Count-1 then listbox1.ItemIndex:=i else begin MediaPlay1.Close; exit; end; With MediaPlayer1do begin FileName:=listbox1.Items[listbox1.itemindex]; Open; Play; end; end; procedure TForm1.MediaPlayer1Notify(Sender: TObject); begin if MediaPlayer1.Mode=mpStopped then begin Inc(I); Button1Click(Sender); end; end; end. 这样有50分吗?
Y yeah Unregistered / Unconfirmed GUEST, unregistred user! 1999-06-07 #6 上面Addmidifile过程序中写错了一句,应为: while findnext(midifile)=0do listbox1.items.Add(Midifile.name);
D delphiboy Unregistered / Unconfirmed GUEST, unregistred user! 1999-06-08 #7 你可以这样写: procedure TForm1.MediaPlayer1Notify(Sender: TObject); begin sAppPath := ExtractFilePath(Application.ExeName); mediaplayer1.filename := sAppPath + '02.mid'; if MediaPlayer1.Mode=mpStopped then begin mediaplayer1.Open; mediaplayer1.play; end; end; procedure TForm1.FormActivate(Sender: TObject); begin sAppPath := ExtractFilePath(Application.ExeName); mediaplayer1.filename := sAppPath + '01.mid'; mediaplayer1.Open mediaplayer1.Play end; 就可以实现文件连续播放啦!
你可以这样写: procedure TForm1.MediaPlayer1Notify(Sender: TObject); begin sAppPath := ExtractFilePath(Application.ExeName); mediaplayer1.filename := sAppPath + '02.mid'; if MediaPlayer1.Mode=mpStopped then begin mediaplayer1.Open; mediaplayer1.play; end; end; procedure TForm1.FormActivate(Sender: TObject); begin sAppPath := ExtractFilePath(Application.ExeName); mediaplayer1.filename := sAppPath + '01.mid'; mediaplayer1.Open mediaplayer1.Play end; 就可以实现文件连续播放啦!