Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
2-1144924527
Sybertron
2006-04-13 14:35
2006.04.30
работа с Exel


4-1139220699
Stas_Kalishenko
2006-02-06 13:11
2006.04.30
Toolbar-меню в чужом приложении


2-1145082227
pavlin_pah
2006-04-15 10:23
2006.04.30
Stringgrid и Scroll


1-1142950062
DelphiLexx
2006-03-21 17:07
2006.04.30
Глюк в Delphi 2005 [Fatal Error] F2039 Could not .. dcu Unit1.dc


2-1145087558
anubis
2006-04-15 11:52
2006.04.30
ImageList





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский