Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2018, 13:33   #1
РезедаМуратова
Пользователь
 
Регистрация: 05.12.2017
Сообщений: 69
По умолчанию Delphi 7 возникал ошибка No MCI Device Open

Здравствуйте, была разработана игра "Магический квадрат" с разными уровнями сложности. После прошествии некоторого времени, решила поиграть в игру, но теперь появилась ошибка. Объясните почему она возникла, причина
Изображения
Тип файла: png Безымянный.png (3.9 Кб, 252 просмотров)
РезедаМуратова вне форума Ответить с цитированием
Старый 16.12.2018, 13:58   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Данная ошибка (по всей видимости) связная с MediaPlayer'ом.
1. Проверьте наличие кодеков, попытайтесь воспроизводимый файл открыть через стандартный плеер;
2. Проверьте пути к файлу;
3. Посмотрите последовательность команд при воспроизведении файла;
4. Пройдитесь отладчиком, посмотрите в каком месте появляется ошибка.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 16.12.2018, 14:15   #3
РезедаМуратова
Пользователь
 
Регистрация: 05.12.2017
Сообщений: 69
По умолчанию

Спасибо большое, сейчас проверю
РезедаМуратова вне форума Ответить с цитированием
Старый 16.12.2018, 14:26   #4
РезедаМуратова
Пользователь
 
Регистрация: 05.12.2017
Сообщений: 69
По умолчанию

Выявилась следующая
Изображения
Тип файла: png Безымянный.png (8.0 Кб, 267 просмотров)
РезедаМуратова вне форума Ответить с цитированием
Старый 16.12.2018, 14:36   #5
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Проверьте свойство:

Код:
MediaPlayer.AutoOpen := True;
Что-то конкретней сказать сложно, нужно смотреть исходник программы.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 16.12.2018, 14:49   #6
РезедаМуратова
Пользователь
 
Регистрация: 05.12.2017
Сообщений: 69
По умолчанию

Код:
unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, Buttons, Grids, jpeg, ExtCtrls, MPlayer;

type
  TForm5 = class(TForm)
    Label2: TLabel;
    Label1: TLabel;
    Image1: TImage;
    Label5: TLabel;
    StringGrid1: TStringGrid;
    BitBtn1: TBitBtn;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N10: TMenuItem;
    PopupMenu1: TPopupMenu;
    MediaPlayer1: TMediaPlayer;
    procedure Image1Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure FormShow(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form5: TForm5;
      a:array of array of integer;
  n:integer;

implementation

uses Unit2, Unit3, Unit4, Unit6;

{$R *.dfm}

procedure TForm5.Image1Click(Sender: TObject);
  var
  a:array of array of integer;
  i, j, n, sumEtalon, sum, sumd1, sumd2 : integer;
begin
  if StringGrid1.RowCount<>StringGrid1.ColCount then begin
    Application.MessageBox('Грид должен быть квадратным. '#13+
    'Обратитесь к программисту, пусть устраняет ошибки в коде!',
    'Ошибка', MB_OK or MB_ICONERROR);
    Exit
  end;

  // выделим память под массив a
  n := StringGrid1.RowCount;
  SetLength(a, n);
  for i := 0 to n - 1 do SetLength(a[i], n);
   try
    //проверим, что в квадрате только натуральные числа и заполним массив a
    for i := 0 to n - 1 do
      for j := 0 to n - 1 do begin
        a[i,j] := StrToIntDef(StringGrid1.Cells[j,i],0);
        if a[i,j]<=0 then begin
              Application.MessageBox('Грид  нужно заполнить натуральными числами',
              'Ошибка', MB_OK or MB_ICONWARNING);
              Exit
        end;
      end;

    // найдём сумму первой строки
    sumEtalon := 0;
    for i := 0 to n-1 do
      sumEtalon := sumEtalon + a[0, i];

    // суммы по диагоналям
    sumd1 := 0; sumd2 := 0;
    for i := 0 to n - 1 do begin
      sumd1:=sumd1+a[i,i];
      sumd2:=sumd2+a[i,n-i-1];
    end;

    if (sumd1<>sumEtalon) or (sumd2<>sumEtalon) then begin
      label2.Caption:='Матрица не является магическим квадратом';
MediaPlayer1.Visible:=false;
MediaPlayer1.FileName:= 'zvuk-neudachi-ua-ua-ua-uaaa.mp3';
MediaPlayer1.Open;
MediaPlayer1.Play;
      Exit
    end;

    // найдём суммы остальных строк
    for i := 0 to n - 1 do begin
       sum := 0;
       for j := 0 to n - 1 do sum := sum + a[i,j];
       if (sum<>sumEtalon) then begin
        label2.Caption:='Матрица не является магическим квадратом';
              MediaPlayer1.Visible:=false;
MediaPlayer1.FileName:= 'zvuk-neudachi-ua-ua-ua-uaaa.mp3';
MediaPlayer1.Open;
MediaPlayer1.Play;
        Exit
       end;
    end;
    // найдём суммы столбцов
    for j := 0 to n - 1 do begin
       sum := 0;
       for i := 0 to n - 1 do sum := sum + a[i,j];
       if (sum<>sumEtalon) then begin
        label2.Caption:='Матрица не является магическим квадратом';
              MediaPlayer1.Visible:=false;
MediaPlayer1.FileName:= 'zvuk-neudachi-ua-ua-ua-uaaa.mp3';
MediaPlayer1.Open;
MediaPlayer1.Play;
        Exit
       end;
    end;

    label2.Caption:='Матрица является магическим квадратом';
          MediaPlayer1.Visible:=false;
MediaPlayer1.FileName:= '00162.mp3';
MediaPlayer1.Open;
MediaPlayer1.Play;

  finally
    for i := 0 to n - 1 do SetLength(a[i], 0);
    SetLength(a, 0);
  end;
end;

procedure TForm5.N5Click(Sender: TObject);
begin
form5.hide;
form2.show;
Label5.Caption:= 'Легко';

end;

procedure TForm5.N6Click(Sender: TObject);
begin
form5.hide;
form3.show;
Label5.Caption:= 'Средней сложности';

end;

procedure TForm5.N7Click(Sender: TObject);
begin
form5.hide;
form4.show;
Label5.Caption:= 'Сложно';

end;

procedure TForm5.N10Click(Sender: TObject);
begin
 AboutBox.ShowModal;
end;

procedure TForm5.FormShow(Sender: TObject);
begin
 MediaPlayer1.Visible:=false;
end;



end.
РезедаМуратова вне форума Ответить с цитированием
Старый 16.12.2018, 15:15   #7
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

По коду всё верно. Как вариант, попробуйте заново положить на форму MediaPlayer, чтобы свойства были по умолчанию и ещё раз проверьте наличие файлов. В вашем случае, они должны находится рядом с .exe файлом программы. Если это не поможет, тогда проблему нужно искать вне программы.

P.S. Если в процессе работы видимость плеера не изменяется, то достаточно сделать один раз так:

Код:
procedure TForm5.FormShow(Sender: TObject);
begin
 MediaPlayer1.Visible:=false;
end;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 16.12.2018, 16:13   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А прога как запускается? Если с ярлыка, то и не найдет тех файлов.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.12.2018, 16:34   #9
РезедаМуратова
Пользователь
 
Регистрация: 05.12.2017
Сообщений: 69
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А прога как запускается? Если с ярлыка, то и не найдет тех файлов.
Я с помощью программы Smart Install Maker сделала инсталльник. и его запускаю выходит ошибка которая указана самой первой. Когда открыла в Delphi игру, то возникла вторая ошибка.
РезедаМуратова вне форума Ответить с цитированием
Старый 16.12.2018, 16:56   #10
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Цитата:
Код:
MediaPlayer1.FileName:= 'zvuk-neudachi-ua-ua-ua-uaaa.mp3';
Прийдется полный путь прописывать:
Код:
C:\ ... \zvuk-neudachi-ua-ua-ua-uaaa.mp3
либо в текущем каталоге независимо от места:
Код:
MediaPlayer1.FileName:=ExtractFilePath(Application.ExeName)+'zvuk-neudachi-ua-ua-ua-uaaa.mp3';
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 16.12.2018 в 17:02.
newerow1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при инициализации MCI EvgeniyVaravko Мультимедиа в Delphi 8 26.11.2017 14:59
[РЕШЕНО] Возникал ошибка: «')' expected but ';' found», помогите, я - новичок IlyaHistorik Помощь студентам 2 17.10.2017 21:04
Ошибка при инициализвции MCI copymiss C++ Builder 3 13.05.2010 10:25
ошибка MCI (!) Erick Cartman Общие вопросы Delphi 1 24.03.2010 05:39
ошибка mci nikolya Помощь студентам 1 05.02.2008 22:52