英語は徐々に世界共通語となり、現代人の英語学習に対する熱意は高まっており、英語リピーターの人気は非常に高いです。ただし、リピーターがどれほど強力であっても、リピート時間が固定されているという明らかな欠陥があります。再読時間が短すぎると、長い文章に遭遇したときにどうすることもできません。再読時間が非常に長い場合は、必然的に冗長な部分を再読したり、早送りしたりする必要があります (最近の再読機には 200 秒のものもある)。早送り機能))、テープを早送りするのと同じくらい面倒です。したがって、著者は、Delphi の強力なメディア再生コントロールを使用して、ソフトウェア リピーターを開発したいと考えています。ソフトウェアリピーターの最大のメリットは、文章の長さに関係なく自由にリピートできることです!巻き戻しや早送りの必要はまったくありません。それだけでなく、ソフトウェア中継器には通常の中継器では実現が難しいランダム読み出し機能も搭載されています。
準備
Delphi のメディア再生コントロールは、さまざまなサウンド ファイルを再生できます。自分の好みに応じて学習教材をコンピュータに記録し、適切な形式で保存できます。通常は、wave ファイルまたは mp3 ファイルとして保存できます。
リピータの開発
開発されたソフトウェア リピーターは主に Delphi のメディア再生コントロール TMediaplayer を使用します。このコントロールはシステム コントロール (システム) ページにあります。
まずアプリケーションを作成します。メインフォームのBorderStyleをBsDialogに設定すると、フォームの拡大縮小が無効になります。 KeyPReview を True に設定すると、メイン フォームがキーボード イベントを処理できるようになります。
メイン フォームにコントロールを配置します。
で:
メディア プレーヤーはプログラムの主要なコントロールであり、サウンドの再生に使用されます。
TrackBar は、現在の再生の進行状況を示すために使用されます。
左側の TlistBox (SectionList) は、再生する音声ファイル (教材) の名前を格納するために使用されます。
右側の 2 つの TlistBox (StartList、StopList) は、繰り返される文を記録するために使用されます。
「追加」ボタンと「削除」ボタンは、学習教材を維持するために使用されます。
TrackBar1 は、再生プロセスを表示するために使用されます。
Timer1 は、再生の進行状況を動的に表示するために使用されます。
OpenDialog1 は、再生するファイルを選択するために使用されます。
リピート機能の実装:
① プログラム内で 2 つの整数 (StartPos、SstopPos) を設定して再生の開始点と終了点を記録し、初期化時に StopPos を -1 に設定します。
② 再生するたびに開始値を記録します。 StartPos := Mediaplayer1.Position;
③ プログラム内で、スペースバーを使用して繰り返しを制御し、Enter キーを使用して再生を続けます。まず、メイン フォームの KeyPreview を True に設定して、メイン フォームがキー メッセージをインターセプトできるようにします。次に、OnKeyDown メソッドをオーバーロードします。コードは次のとおりです。
無料読書機能の実装:
再読時には、繰り返されるすべての文の始点と終点が記録されるため、どの文でも再読できます。ユーザーが「過去」の行をマウスでダブルクリックすると、その文の再生に直接切り替えることができます。コードは次のとおりです。
プロシージャ TRepeaterForm.ListDblClick(送信者: TObject);
始める
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; //指定した範囲の音を再生します。
終わり;
学習教材の追加:
「追加」ボタンをクリックして学習教材を追加します。重複を防ぐために、新しいファイルを追加する前に元のリストを取得する必要があることに注意してください。コードは次のとおりです。
プロシージャ TRepeaterForm.AddBtnClick(送信者: TObject);
var fn: 文字列;
始める
OpenDialog1.Execute の場合
始める
fn := OpenDialog1.ファイル名;
if SectionList.Items.IndexOf(fn)<0 then //ファイルが存在しない場合は、最初にファイルを取得します。 SectionList.Items.Add(fn); //リストに追加します。
終わり;
終わり;
学習教材の選択:
OnClick メソッドをオーバーロードすることで実現されます。まずクリックされたときにインデックスを取得し、次に Items [インデックス] を通じてファイル名を取得します。ファイル名を Mediaplayer の Filename プロパティに割り当てて、Open メソッドを呼び出します。 (コード省略)
さらに、プログラムの初期化時に学習教材ファイルを開き、プログラムの終了時に学習教材を保存する必要があります。これらの関数は、TlistBox.Items.LoadFromFile および TlistBox.Items.SaveToFile を通じて実装されます (コードは省略されています)。
プログラムは中国の Windows98+Delphi5.0 環境でのデバッグに合格しました。すべてのソース コードは、作者にメールで送信することで入手できます。