Главная страница
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.029 c
2-1144736119
lionmen
2006-04-11 10:15
2006.04.30
Срочно!!!


2-1144733271
tigra
2006-04-11 09:27
2006.04.30
Ширина колонок таблицы в Word


2-1144731535
Neiroman
2006-04-11 08:58
2006.04.30
Random()


15-1144299862
Ega23
2006-04-06 09:04
2006.04.30
Тьфу, блин!!! С Днём рождения! 6 апреля


3-1141647995
Клон
2006-03-06 15:26
2006.04.30
Blolb поля в Mysql используя DbExpress