영어는 점차 글로벌 언어가 되었고, 현대인의 영어 학습에 대한 열의가 높아졌습니다. 그러나 리피터가 아무리 강력하더라도 분명한 결함이 있습니다. 바로 고정된 반복 시간입니다. 다시 읽는 시간이 너무 짧으면 긴 문장을 만났을 때 할 수 있는 일이 없고, 다시 읽는 시간이 너무 길면 필연적으로 중복되는 부분을 다시 읽어야 하고 빨리 감기해야 합니다(요즘 일부 200초 다시 읽는 기계는 빨리감기 기능) ), 이는 테이프를 빨리감는 것만큼 귀찮은 일입니다! 따라서 저자는 델파이의 강력한 미디어 재생 컨트롤을 사용하여 소프트웨어 리피터를 개발하고자 합니다. 소프트웨어 반복기의 가장 큰 장점은 문장의 길이에 관계없이 자유롭게 반복할 수 있다는 점! 되감기나 빨리감기를 할 필요가 전혀 없습니다. 뿐만 아니라 소프트웨어 중계기는 일반 중계기에서는 달성하기 어려운 임의 읽기 기능도 갖추고 있습니다.
준비
Delphi의 미디어 재생 컨트롤은 다양한 사운드 파일을 재생할 수 있습니다. 우리는 자신의 선호도에 따라 학습 자료를 컴퓨터에 기록하고 적절한 형식으로 저장할 수 있습니다. 일반적으로 웨이브 파일이나 mp3 파일로 저장할 수 있습니다.
중계기 개발
개발된 소프트웨어 중계기는 주로 델파이의 미디어 재생 컨트롤인 TMediaplayer를 사용합니다. 이 컨트롤은 시스템 컨트롤(system) 페이지에 있습니다.
먼저 응용 프로그램을 만듭니다. 폼의 확대 및 축소를 비활성화하려면 기본 폼의 BorderStyle을 BsDialog로 설정합니다. 기본 양식에서 키보드 이벤트를 처리하도록 하려면 KeyPReview를 True로 설정하세요.
기본 양식에 컨트롤을 배치합니다.
안에:
미디어 플레이어는 프로그램의 주요 제어 장치이며 소리를 재생하는 데 사용됩니다.
TrackBar는 현재 재생 진행 상황을 나타내는 데 사용됩니다.
왼쪽의 TlistBox(SectionList)는 재생할 사운드 파일(학습자료)의 이름을 저장하는 데 사용됩니다.
오른쪽 두 개의 TlistBox(StartList, StopList)는 반복되는 문장을 기록하는데 사용됩니다.
학습자료를 유지하기 위해 '추가', '삭제' 버튼을 사용합니다.
TrackBar1은 재생 프로세스를 표시하는 데 사용됩니다.
Timer1은 재생 진행 상황을 동적으로 표시하는 데 사용됩니다.
OpenDialog1은 재생할 파일을 선택하는 데 사용됩니다.
반복 기능 구현:
① 재생 시작점과 끝점을 기록하기 위해 프로그램에 두 개의 정수(StartPos, SstopPos)를 설정하고, 초기화 시 StopPos를 -1로 설정합니다.
② 재생될 때마다 시작 값을 기록합니다. StartPos := Mediaplayer1.Position;
③ 프로그램에서 반복 재생을 제어하려면 스페이스바를 사용하고, 계속 재생하려면 Enter 키를 사용하십시오. 먼저 기본 양식이 주요 메시지를 가로챌 수 있도록 기본 양식의 KeyPreview를 True로 설정합니다. 그런 다음 OnKeyDown 메서드를 오버로드합니다. 코드는 다음과 같습니다:
무료 독서 기능 구현:
다시 읽는 동안 반복되는 모든 문장의 시작점과 끝점을 기록하므로 어떤 문장이라도 다시 읽을 수 있습니다. 사용자가 '과거' 항목의 한 줄을 마우스로 더블클릭하면 해당 문장의 재생으로 바로 전환할 수 있습니다. 코드는 다음과 같습니다:
절차 TRepeaterForm.ListDblClick(Sender: 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(Sender: 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 환경에서 디버깅을 통과했습니다. 모든 소스 코드는 작성자에게 메일을 보내서 얻을 수 있습니다.