Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.30;
Скачать: CL | DM;

Вниз

Проигрывание MIDI файлов средствами mci   Найти похожие ветки 

 
AlexFV   (2005-12-01 17:02) [0]

Приветствую Вас друзья-делфисты. Не подскажите мне?
Есть Форма для проигрывания midi файла средствами mci. На ней 4 кнопки и editbox. Кнопки: Выбор файла, Воспроизведение, Пауза, Стоп.

Вот полный код:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, mmsystem;

type
 TForm1 = class(TForm)
   btnPlay: TButton;
   btnStop: TButton;
   btnPause: TButton;
   btnOpenFile: TButton;
   edtFileName: TEdit;
   OpenDialog1: TOpenDialog;
   procedure btnPlayClick(Sender: TObject);
   procedure btnPauseClick(Sender: TObject);
   procedure btnStopClick(Sender: TObject);
   procedure btnOpenFileClick(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

const
 DeviceName="WaveAudio";
var
 Form1: TForm1;
 FileName:String;
 lPause:Boolean;

implementation

{$R *.dfm}

procedure SendMCICommand(Cmd: string);
 var RetVal: Integer;
     ErrMsg: array[0..254] of char;
begin
 RetVal := mciSendString(PChar(Cmd), nil, 0, 0);
 if RetVal <> 0 then
   begin
     mciGetErrorString(RetVal, ErrMsg, 255);
     MessageDlg(StrPas(ErrMsg), mtError, [mbOK], 0);
   end;
end;

procedure TForm1.btnPlayClick(Sender: TObject);
begin
 btnPause.Visible := True;
 btnPlay.Visible := False;

 if lPause=False then begin
   SendMCICommand("Open "+DeviceName);
   SendMCICommand("Play "+FileName);
   end
 else
    SendMCICommand("Resume "+DeviceName);
 SendMCICommand("Close "+DeviceName);
end;

procedure TForm1.btnPauseClick(Sender: TObject);
begin
 btnPause.Visible := False;
 btnPlay.Visible := True;
 lPause := True;
 SendMCICommand("Pause "+FileName);
end;

procedure TForm1.btnStopClick(Sender: TObject);
begin
 btnPause.Visible := False;
 btnPlay.Visible := True;

 SendMCICommand("Stop "+FileName);

end;

procedure TForm1.btnOpenFileClick(Sender: TObject);
begin
 btnPlay.Enabled := False;
 btnStop.Enabled := False;
  if OpenDialog1.Execute then begin
    FileName := OpenDialog1.FileName;
    edtFileName.Text := ExtractFileName(FileName);
    btnPlay.Enabled := True;
    btnStop.Enabled := True;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    lPause := False;
end;

end.


Проблема в том, что ни как не пойму как реализовать воспроизведение после нажатия паузы, т.е. чтоб файл играл не с начала, а с того фрагмента как была нажата пауза.
Ошибка возникае на строке:
SendMCICommand("Resume "+DeviceName);

"Используемое устройство mci не поддерживает указанную команду"
Не подскажите как изменить код?


 
Digitman ©   (2005-12-02 08:37) [1]

а в чем прелесть изобретения очередного велосипеда ?

стандартный компонент TMediaPlayer как раз и использует mci ..

либо задействуй этот готовый компонент либо посмотри в его исходниках как это правильно делается



Страницы: 1 вся ветка

Текущий архив: 2006.04.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.037 c
2-1144831112
RomanH
2006-04-12 12:38
2006.04.30
IBDataSet на сервере приложений


2-1144930611
Der Nechk@ssoff
2006-04-13 16:16
2006.04.30
Типизация файла


3-1141902097
anubis
2006-03-09 14:01
2006.04.30
Экспорт таблицы В Excel


15-1144385959
Ega23
2006-04-07 08:59
2006.04.30
С Днём рождения! 7 апреля


3-1141989429
Ega23
2006-03-10 14:17
2006.04.30
Утилита osql