Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 10 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Определить длину WAV файла


 type
   EMyMCIException = class(Exception);
 
 var
   FDeviceID: Word;
   MyError, dwFlags: Longint;
 
 procedure TForm1.GetWaveLength;
 var
   WaveLen: DWORD;
 begin
   OpenMedia('C:\Hickory.wav');
   SetMediaTimeFormat;
   WaveLen := GetMediaStatus(MCI_STATUS_LENGTH);
   CloseMedia;
   Form1.label1.Caption := IntToStr(WaveLen) + 'mS';
 end;
 
 procedure TForm1.OpenMedia(FileName: string);
 var
   MyOpenParms: TMCI_Open_Parms;
 begin
   with MyOpenParms do
   begin
     dwCallback := Handle; // TForm1.Handle 
     lpstrDeviceType := PChar('WaveAudio');
     lpstrElementName := PChar(FileName);
   end; {with MyOpenParms}
   dwFlags := MCI_WAIT or MCI_OPEN_ELEMENT or MCI_OPEN_TYPE;
   MyError := mciSendCommand(0, MCI_OPEN, dwFlags, Longint(@MyOpenParms));
   // one could use mciSendCommand(DevId, etc here to specify a particular 
   device
   if MyError = 0 then
     FDeviceID := MyOpenParms.wDeviceID
   else
     raise EMyMCIException.Create('Open Failed');
 end;
 
 procedure TForm1.SetMediaTimeFormat;
 var
   MySetParms: TMCI_Set_Parms;
 begin
   if FDeviceID <> 0 then
   begin
     dwFlags := MCI_WAIT or MCI_SET_TIME_FORMAT;
     MySetParms.dwCallback := Handle; // TForm1.Handle 
     MySetParms.dwTimeFormat := MCI_FORMAT_MILLISECONDS;
     MyError := mciSendCommand(FDeviceID, MCI_SET, dwFlags,
       Longint(@MySetParms));
     if MyError <> 0 then
       raise EMyMCIException.Create('Status Failed');
   end;
 end;
 
 function TForm1.GetMediaStatus(StatusItem: DWORD): DWORD;
 var
   MyStatusParms: TMCI_Status_Parms;
 begin
   if FDeviceID <> 0 then
   begin
     dwFlags := MCI_WAIT or MCI_STATUS_ITEM;
     MyStatusParms.dwCallback := Handle; // TForm1.Handle 
     MyStatusParms.dwItem := StatusItem;
     MyError := mciSendCommand(FDeviceID, MCI_STATUS, dwFlags,
       Longint(@MyStatusParms));
     if MyError = 0 then
       Result := MyStatusParms.dwReturn
     else
     begin
       raise EMyMCIException.Create('Status Failed');
     end;
   end;
 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));
     if MyError = 0 then
       FDeviceID := 0
     else
     begin
       raise EMyMCIException.Create('Close Failed');
     end;
   end;
 end;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS