請教mp3清單播放的迴圈問題 |
答題得分者是:geniustom
|
poemkevin
初階會員 發表:26 回覆:77 積分:30 註冊:2002-10-19 發送簡訊給我 |
請問各位前輩大哥一個問題,
musiclist是音樂清單, 資料也載入好幾筆,
想要讓它循序播放,
每播完一首歌, 再換下一首歌, 可是這個迴圈一run下去, 就是只會跑最後一首歌
請問, 小弟的程式是那裏寫錯了, 前輩是否可以指導一下小弟, 謝謝!! musiclists是TStringlist
讀入MList.txt歌曲清單檔
for i := 0 to (musiclists.Count-1) do begin Mediaplayer1.FileName:= musiclists.Strings[i]; // Mediaplayer1.AutoRewind:=true; // Mediaplayer1.Notify := true; application.ProcessMessages; if FileExists(Mediaplayer1.FileName) then begin Mediaplayer1.Open; Mediaplayer1.Play; // Sleep(10000); end else exit;=========================== 沉思, 再沉思! 學習, 再學習! 生活隨喜, 簡單自在^^ =========================== 發表人 - poemkevin 於 2004/11/12 19:27:58 |
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
引言: 請問各位前輩大哥一個問題, musiclist是音樂清單, 資料也載入好幾筆, 想要讓它循序播放, 每播完一首歌, 再換下一首歌, 可是這個迴圈一run下去, 就是只會跑最後一首歌 請問, 小弟的程式是那裏寫錯了, 前輩是否可以指導一下小弟, 謝謝!! musiclists是TStringlist 讀入MList.txt歌曲清單檔因為Mediaplayer1.Play會馬上return, 所以程式執行到Mediaplayer1.Play就會馬上執行下一行程式, 這就是為什麼你的loop會一次跑完. 你可以改用偵測目前是否已播放完, 若已播放完才換下一首.for i := 0 to (musiclists.Count-1) do begin Mediaplayer1.FileName:= musiclists.Strings[i]; // Mediaplayer1.AutoRewind:=true; // Mediaplayer1.Notify := true; application.ProcessMessages; if FileExists(Mediaplayer1.FileName) then begin Mediaplayer1.Open; Mediaplayer1.Play; // Sleep(10000); end else exit;=========================== 沉思, 再沉思! 學習, 再學習! 生活隨喜, 簡單自在^^ =========================== 發表人 - poemkevin 於 2004/11/12 19:27:58 |
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
|
poemkevin
初階會員 發表:26 回覆:77 積分:30 註冊:2002-10-19 發送簡訊給我 |
謝謝Zard大大的回應, 只是這問題我有想過, 試了好幾種方式,
都試不出來解決的方式, 所以才會在這裏問前輩們這問題? 請問那該如何去做,
小弟有試過用boolean或是用Sleep(10000);
和 if MediaPlayer1.NotifyValue = nvSuccessful then
begin
MediaPlayer1.Play;
end;
或在for的迴圈中再加上repeat的判斷函數
就是沒辦法解決問題, 這些只會造成程式死當或cpu效率變低 本想該它迴圈暫停, 等該首歌曲放完, 自動再致能迴圈跑下一首.
只是不知該如何做 是否有前輩可以幫小弟改一下程式碼, 或者有範例提供, 感激不盡!! ===========================
沉思, 再沉思! 學習, 再學習!
生活隨喜, 簡單自在^^
===========================
|
poemkevin
初階會員 發表:26 回覆:77 積分:30 註冊:2002-10-19 發送簡訊給我 |
geniustom 您好:
謝謝您的回應, 只是音樂還是會直接run最後一首歌!!
程式碼如下:
procedure TForm1.MediaPlayer1Notify(Sender: TObject); begin if MListCbx.Checked = true then begin if MUSICINDEX = (musiclists.count) then exit; //表示播放完畢了 MUSICINDEX:=MUSICINDEX 1; //檔案指標加1 Mediaplayer1.FileName:= musiclists.Strings[MUSICINDEX]; //播放第(MUSICINDEX)首 if FileExists(Mediaplayer1.FileName) then begin Mediaplayer1.Open; Mediaplayer1.Play; end; if MUSICINDEX=(musiclists.count) then MUSICINDEX:=0; //加了這行..就可以重複播放 //若不加..放完就停止了 end; end; procedure TForm1.Button1Click(Sender: TObject); var filename1:string; i:integer; aaa:boolean; begin loadstr.LoadFromFile('c:\list.txt'); Mediaplayer1.AutoRewind:=false; //連續播放 Mediaplayer1.Notify := true; Mediaplayer1.FileName:= musiclists.Strings[MUSICINDEX]; if FileExists(Mediaplayer1.FileName) then begin Mediaplayer1.Open; Mediaplayer1.Play; end else exit; end; end;=========================== 沉思, 再沉思! 學習, 再學習! 生活隨喜, 簡單自在^^ =========================== 發表人 - poemkevin 於 2004/11/12 20:38:21 |
poemkevin
初階會員 發表:26 回覆:77 積分:30 註冊:2002-10-19 發送簡訊給我 |
謝謝二位大大的指導, 小弟解決問題了^^
MUSICINDEX:integer; //音樂連續播放 procedure TForm1.MediaPlayer1Notify(Sender: TObject); begin if (MListCbx.Checked = true) and (MediaPlayer1.NotifyValue = nvSuccessful) then begin if MUSICINDEX = (musiclists.count) then exit; //表示播放完畢了 Mediaplayer1.FileName:= musiclists.Strings[MUSICINDEX]; //播放第(MUSICINDEX)首 if FileExists(Mediaplayer1.FileName) then begin Mediaplayer1.Open; Mediaplayer1.Play; end; MUSICINDEX:=MUSICINDEX 1; //檔案指標加1 if MUSICINDEX=(musiclists.count) then MUSICINDEX:=0; //加了這行..就可以重複播放 //若不加..放完就停止了 end; if (MListCbx.Checked = False) and (MediaPlayer1.NotifyValue = nvSuccessful) then begin MediaPlayer1.Play; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Mediaplayer1.AutoRewind:=false; Mediaplayer1.Notify := true; loadstr.LoadFromFile('c:\list.txt'); MUSICINDEX:=0; Mediaplayer1.FileName:= musiclists.Strings[MUSICINDEX]; if FileExists(Mediaplayer1.FileName) then begin Mediaplayer1.Open; Mediaplayer1.Play; end else exit; end;=========================== 沉思, 再沉思! 學習, 再學習! 生活隨喜, 簡單自在^^ =========================== |
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |