Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
{....} privateprocedure
OpenMedia(WaveFile : string
); function
GetStatus(StatusRequested : DWord) : longint; procedure
CloseMedia;
{....} varMyError, dwFlags: Longint; FDeviceID : Word;
{....} usesMMSystem;
{....} procedureTForm1.OpenMedia(WaveFile: string
); var
MyOpenParms: TMCI_Open_Parms; begin
with
MyOpenParms do
begin
dwCallback := Handle;
// TForm1.Handle lpstrDeviceType := PChar('WaveAudio'); lpstrElementName := PChar(WaveFile); end;
{with MyOpenParms} dwFlags := MCI_WAIT orMCI_OPEN_ELEMENT or
MCI_OPEN_TYPE; MyError := mciSendCommand(0, MCI_OPEN, dwFlags, Longint(@MyOpenParms));
// one could use mciSendCommand(DevId, here to specify a particular device ifMyError = 0 then
FDeviceID := MyOpenParms.wDeviceID else
raise
Exception.Create('Open Failed'); end
; function
TForm1.GetStatus(StatusRequested: DWORD): Longint; var
MyStatusParms: TMCI_Status_Parms; begin
dwFlags := MCI_WAIT or
MCI_STATUS_ITEM; with
MyStatusParms do
begin
dwCallback := Handle; dwItem := StatusRequested; end
; MyError := mciSendCommand(FDeviceID, MCI_STATUS, MCI_WAIT or
MCI_STATUS_ITEM, Longint(@MyStatusParms)); if
MyError = 0 then
Result := MyStatusParms.dwReturn else
raise
Exception.Create('Status call to get status of ' + IntToStr(StatusRequested) + ' Failed'); end
; procedure
TForm1.CloseMedia; var
MyGenParms: TMCI_Generic_Parms; begin
if
FDeviceID > 0 then
begin
dwFlags := 0; MyGenParms.dwCallback := Handle;
// TForm1.Handle MyError := mciSendCommand(FDeviceID, MCI_CLOSE, dwFlags, Longint(@MyGenParms)); ifMyError = 0 then
FDeviceID := 0 else
begin
raise
Exception.Create('Close Failed'); end
; end
; end
;
//Example: procedureTForm1.Button1Click(Sender: TObject); begin
if
OpenDialog1.Execute then
begin
OpenMedia(OpenDialog1.FileName); with
ListBox1.Items do
begin
Add('Average Bytes / Sec : ' + IntToStr(GetStatus(MCI_WAVE_STATUS_AVGBYTESPERSEC))); Add('Bits / Sample : ' + IntToStr(GetStatus(MCI_WAVE_STATUS_BITSPERSAMPLE))); Add('Samples / Sec : ' + IntToStr(GetStatus(MCI_WAVE_STATUS_SAMPLESPERSEC))); Add('Channels : ' + IntToStr(GetStatus(MCI_WAVE_STATUS_CHANNELS))); end
; CloseMedia; end
; end
;