a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Delphi > 正文

用Delphi自制英語復讀機

2019-11-18 18:56:03
字體:
來源:轉載
供稿:網友

  英語已經逐漸成為一種世界性的語言,現代人學習英語的熱情一浪高過一浪,所以,英語復讀機十分的熱銷。但是,無論功能如何強大的復讀機都有一個明顯的缺陷――復讀時間的固定的。如果復讀時間太短,那么,當遇到長句子時就無能為力;如果復讀的時間很長,使用時就免不了復讀一些多余的部分,免不了進行快進(時下有些200秒的復讀機具有快進功能),這與磁帶的快進一樣麻煩!所以,筆者想利用Delphi強大的媒體播放控件開發一個軟件復讀機。軟件復讀機最大的優點是,無論是句子的長短您都能自如地復讀!絕對不需要倒帶,也不需要快進。不僅如此,軟件復讀機還具有隨機選讀功能,這是一般復讀機很不好實現的。

準備工作
  Delphi的媒體播放控件可已播放各種聲音文件。我們可以根據自己的喜好把學習資料錄制到計算機中,存成合適的格式。一般可存成wave文件或mp3文件。

復讀機的開發
  開發軟件復讀機使用的主要是Delphi的媒體播放控件TMediaplayer。該控件在系統控制(system)頁中。
  首先創建一個應用程序。設定主窗體的BorderStyle為BsDialog,禁止窗體的放大與縮小。設定KeyPReview為True,讓主窗體處理鍵盤事件。
在主窗體上放置控件:

其中:
媒體播放器是程序的關鍵控件,用來實現聲音的播放。
TrackBar用來指示當前的播放進度。
左邊的TlistBox(SectionList)用來存放將要播放的聲音文件名(學習資料)。
右邊的兩個TlistBox(StartList、StopList)用于記錄復讀過的句子。
‘增加’與‘刪除’按鈕用于維護學習資料。
TrackBar1用于顯示播放進程。
Timer1用于動態顯示播放進度。
OpenDialog1用于選擇播放文件。

復讀功能的實現:
① 程序中設置兩個整數(StartPos, SstopPos)用于記錄播放的起止點,并在初始化時將StopPos賦值為-1。
② 每次播放時記錄當時的起始值:StartPos := Mediaplayer1.Position;
③ 程序中用空格鍵控制復讀,回車鍵繼續放音。首先,設置主窗體的KeyPreview為True,使主窗體能夠截獲按鍵消息。然后,重載OnKeyDown方法。代碼如下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


自由選讀功能的實現:
  由于在復讀時記錄了所有復讀過的句子的起止點,所以可以進行任意一句的復讀。當用戶用鼠標雙擊‘往昔歲月’中某一行時,可直接切換到該句的播放。代碼如下:
procedure TRepeaterForm.ListDblClick(Sender: TObject);

begin

SID := (Sender as TListBox).ItemIndex; //取得當前行的索引
SID StopList.ItemIndex := SID; //將終點列表設置為
SID StartList.ItemIndex := SID; //將起始列表設置為
SID StartPos := StrToInt(StartList.Items[SID]);//取得開始位置

StopPos := StrToInt(StopList.Items[SID]);//取得終止位置

Mediaplayer1.StoP; //停止當前的播放
Mediaplayer1.StartPos := StartPos; //設置新的播放范圍
Mediaplayer1.EndPos := StopPos;
Mediaplayer1.Play; //播放指定范圍的聲音

end;

學習資料的添加:
單擊增加按鈕用于增加學習資料。需要注意的是在增加新的文件之前應檢索原有的列表,以防止重復。代碼如下:
procedure TRepeaterForm.AddBtnClick(Sender: TObject);

var fn: string;
begin

 if OpenDialog1.Execute then
   begin
    fn := OpenDialog1.FileName;
    if SectionList.Items.IndexOf(fn)<0 then //先檢索該文件,如果不存在                SectionList.Items.Add(fn); //加入到列表中

   end;

end;

學習資料的選擇:
  通過重載OnClick方法實現。先取得單擊時的索引,然后通過Items[索引]取得文件名。將文件名賦值給Mediaplayer的Filename屬性,然后調用Open方法即可。(代碼略)
  另外,在程序的初始化時要打開學習資料文件;程序退出時將學習資料存盤。這些功能都是通過TlistBox.Items.LoadFromFile和TlistBox.Items.SaveToFile實現的(代碼略)。
  該程序在中文Windows98+Delphi5.0環境下調試通過。全部源代碼可Mail作者索取。


上一篇:從delphi6,kylix看borland的未來發展

下一篇:在delphi把字符串分割成一維數組

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 日韩视频在线观看 | 毛片一区二区三区 | 日韩精品小视频 | 日日av拍夜夜添久久免费 | 亚洲精品一区二区三区四区高清 | 亚洲高清免费视频 | 一区二区三区国产好 | 狠狠ri| 国产精品久久久久久久久久久久久 | 国产一级片免费观看 | 国产精品一区亚洲二区日本三区 | 日韩精品专区在线影院重磅 | 97av超碰 | 日韩成人精品 | 和尚风流一级艳片 | 18视频免费网址在线观看 | 伊人久久国产 | 91精品久久久久久久久中文字幕 | 在线成人免费视频 | 国产精品久久久久久久久 | 国产精品视频网站 | 日韩精品亚洲一区 | 粉嫩高清一区二区三区精品视频 | 久久久久久久精 | 国产一区二区三区四区在线观看 | 在线观看国产日韩欧美 | 久久久久久久国产 | 日韩精品一区二区三区老鸭窝 | 亚洲一区二区黄 | 日本一区二区精品 | 中文字幕91 | 日韩欧美一区二区三区免费观看 | 国产在线啪 | www国产亚洲精品久久网站 | 色综合天天综合网国产成人网 | 欧美一卡二卡 | 日韩免费 | 亚洲www永久成人夜色 | www国产亚洲精品久久网站 | 午夜影院18 | 日本一区二区精品 |