미디어쪽은 완전히 생초보라서...많이 모르겠네요..
avi파일을 찾아서 해당 파일을 그냥 재생만 할라구 하거든요..
게시판의 xProject에 있는 소스를 약간 변경시킨건데..
목적이 파일의 재생만이라서......(나중에는 DB에 있는것을 재생해야해요)
그런데....실행을 했더니 에러메세지가 뜨네요..
뭐라고하냐면요..
"project1.exe raised exception class EMCIDeviceError with message No MCI device open "
음..제 주위에 이걸 아는 사람들이 별로 없어서 고생을 좀 하고있네요..
실행은 되는데 2초정도 후에 이런 메세지가 뜨더라구요..
제가 뭘 잘못한거죠?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, MPlayer, ExtCtrls ;
type
TForm1 = class(TForm)
Panel1: TPanel;
btn_Play: TBitBtn;
btn_Stop: TBitBtn;
TrackBar1: TTrackBar;
Button1: TButton;
OpenDialog1: TOpenDialog;
Timer1: TTimer;
MediaPlayer1: TMediaPlayer;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure btn_PlayClick(Sender: TObject);
procedure btn_StopClick(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
TheLength : integer ;
DisRect : TRect ;
begin
if OpenDialog1.Execute then
begin
MediaPlayer1.FileName := OpenDialog1.FileName ;
MediaPlayer1.Open ;
MediaPlayer1.TimeFormat := tfMilliseconds ;
TheLength := MediaPlayer1.Length ;
DisRect.Left := 0;
DisRect.Top := 0;
DisRect.Right := Panel1.Width ;
DisRect.Bottom := Panel1.Height ;
MediaPlayer1.DisplayRect := DisRect;
TrackBar1.Min := 0 ;
TrackBar1.Max := TheLength ;
btn_Stop.Enabled := true ;
Timer1.Enabled := true ;
MediaPlayer1.Play ;
end ;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
ThePosition : integer ;
begin
ThePosition := MediaPlayer1.Position ;
if TrackBar1.Max = MediaPlayer1.Position then
begin
Timer1.Enabled := false ;
btn_Play.Enabled := true ;
end ;
TrackBar1.Position := MediaPlayer1.Position ;
end;
procedure TForm1.btn_PlayClick(Sender: TObject);
begin
Timer1.Enabled := true ;
btn_Play.Enabled := false ;
btn_Stop.Enabled := true ;
MediaPlayer1.Play ;
end;
procedure TForm1.btn_StopClick(Sender: TObject);
begin
Timer1.Enabled := false ;
btn_Play.Enabled := true ;
btn_Stop.Enabled := false ;
MediaPlayer1.Stop ;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
MediaPlayer1.Stop ;
MediaPlayer1.Position := TrackBar1.Position ;
Timer1.Enabled := true ;
btn_Play.Enabled := false ;
btn_Stop.Enabled := true ;
MediaPlayer1.Play ;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree ;
end;
end.
will not perform the specified command on an automatically opened device. Wait until the device is closed, then try to perform the command.
MCIERR_DEVICE_OPEN The device name is already used as an alias by this application. Use a unique alias.
둘중의 하나가 원인인것 같습니다.
장치가 이미사용중이거나 ...
아니면 파일 포맷등을 잘못 맞추어 열었을 경우 입니다.
아무래도 후자일 가능성이 더 많지요...
프로퍼티 에서 Device 부분을 살펴 보시기 바랍니다.
자동으로 되어있으면..
파일 포맷(압축)현제 컴에서 지원되는 것인지
알아보시기 바랍니다.
그럼 ^^