Главная страница
    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.46 MB
Время: 0.008 c
2-1145021547
BMP
2006-04-14 17:32
2006.04.30
Перетаскивание image


1-1142880743
Igor_thief
2006-03-20 21:52
2006.04.30
Drag and Drop


15-1144235817
ilifant
2006-04-05 15:16
2006.04.30
Проблема со справочной системой


2-1145001367
Dust
2006-04-14 11:56
2006.04.30
Рекурсивный обход папок,,, или не рекурсивный...


4-1139395573
rOOse
2006-02-08 13:46
2006.04.30
PopUp Menu





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский