Форум: "Media";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];
ВнизПроигрывание 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 вся ветка
Форум: "Media";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c