Модераторы: Snowy, Alexeis, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как при открытии формы воспроизвести миди, Как при открытии формы воспроизвести мид 
V
    Опции темы
alexamur
Дата 7.3.2009, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



Имеется простая форма, содержащая несколько кнопок, при открытии которой нужно воспроизвести миди-файл n-ное количество раз, например 2 раза.
PM MAIL   Вверх
~FoX~
Дата 7.3.2009, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



TMediaPlayer
Или  по онШоу что нить вроде этого делать
Код

uses MMSystem;

//..............
  MCISendString(PChar('PLAY ' + 'c:\mymidi.mdi'), nil, 0, 0);  
//.............




--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
alexamur
Дата 7.3.2009, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



~FoX~ Спасибо! Здорово! Прошу не удивляться моей реакции - мой статус очевиден. Но есть маленькое но: как все это сделать, чтобы миди файл был в теле программы? Да, и "очепятка" наверное, не mymidi.mdi, а *.mid. Но это неважно, главное суть понятна. Так что большой респект!
PM MAIL   Вверх
~FoX~
Дата 8.3.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



alexamur,  Засовывай в ресурсы экзешника, или просто рядом харни ресурс....
Да, очепятка....но писал в барузере, так что думаю простительно ...


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
alexamur
Дата 9.3.2009, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



~FoX~,
Цитата(~FoX~ @  8.3.2009,  11:25 Найти цитируемый пост)
alexamur,  Засовывай в ресурсы экзешника, или просто рядом харни ресурс....
Да, очепятка....но писал в барузере, так что думаю простительно ...


Без вопросов про очепятку....
Более развернутый вопрос по теме направил в мыло, если не сложно - жду ответ.
PM MAIL   Вверх
MetalFan
Дата 9.3.2009, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



Цитата(alexamur @  9.3.2009,  10:05 Найти цитируемый пост)
вопрос по теме направил в мыло, если не сложно - жду ответ

обычно на форумах принято общаться либо в открытую, либо по ЛС(мылу, асе, ирке).
а запостив последнее сообщение вы поступаете очень некрасиво по отношению к другим участникам форума.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
alexamur
Дата 9.3.2009, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



Цитата(MetalFan @  9.3.2009,  10:28 Найти цитируемый пост)
обычно на форумах принято общаться либо в открытую, либо по ЛС(мылу, асе, ирке).
а запостив последнее сообщение вы поступаете очень некрасиво по отношению к другим участникам форума. 

Я извиняюсь, но сделал это потому, что вопрос скорее "чайниковый", именно такой уровень знаний по Делфи сейчас у меня. А ~FoX~ мне ответил, вот я ему и написал. Вот в принципе содержание:"...Ресхакером запихал в ексешник ресурс миди, но кина никакого нет: все открывается, но молчит, как рыба. Хотелось бы реальный кусочек кода, разумеется если возможно. Вообще задумка примитивно проста: на форме есть TImage, в качестве фона открытка, есть кнопка закрытия формы. При открытии .exe проигрывается что-нибудь легковесное миди. И чтобы все это в одном .ехе ..."
PM MAIL   Вверх
MetalFan
Дата 9.3.2009, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



я не к тому, что вопрос "чайниковый" или "для профи". а к тому, что сказал на форуме А, говори и Б тоже на форуме.
по поводу ресурсов... я бы порекомендовал воспользоваться "долгим" путем с вкомпилом ресурса средствами делфи (ПОИСК), а не ресхакером.
тогда и под отладкой можно былоб посмотреть, почему не грузится.
так же, если хочешь, чтобы быстро помогли, выкладывай пример исходного кода, который не работает. а еще лучше пример проекта.

Это сообщение отредактировал(а) MetalFan - 9.3.2009, 12:02


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
~FoX~
Дата 9.3.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



alexamur, Ресхакром это конечно нашь метод решения проблемы, но я бы поступил проще )))
Создаем текстовый файл в него пишем что нить вроде такого:
Цитата

  MYMID RCDATA "MYMID.MID"

Пускай лежит например в корне диска c:\ 
Переименовываем его во что нить вроде MyRes.rc
Туда же в корень кладем сам mymid.mid
Запускаем cmd и в нем пишем:
Цитата

 brcc32 c:\MyRes.rc

Давим ентер.
Появиться файл MyRes.res его копируем в папку с проектом...
после implementation пишем 
Код

{$R MyRes.res}


В коде пишем:
Код

procedure TForm1.FormCreate(Sender: TObject);
var
  PMyMid: pointer;
  HMyMid: THandle;
  RI: boolean;
begin
  HMyMid := FindResource(hInstance, 'MYMID', rt_RCData);
  HMyMid := LoadResource(hInstance, HMyMid);
  PMyMid := LockResource(HMyMid);
  RI := sndPlaySound(PMyMid, snd_Memory or SND_ASYNC);
  UnlockResource(HMyMid);
  FreeResource(HMyMid);
end;


собственна и вся премудрость...


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
MetalFan
Дата 9.3.2009, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



Цитата(~FoX~ @  9.3.2009,  17:24 Найти цитируемый пост)
 RI := sndPlaySound(PMyMid, snd_Memory or SND_ASYNC);
  UnlockResource(HMyMid);
  FreeResource(HMyMid);

а худо от такого не будет? играем асинхронно, и сразу убиваем ресурс....


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
~FoX~
Дата 9.3.2009, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



MetalFan, Ндя, понедельник- вечер....Ну забыл я try...finally или if поставить  smile 

Это сообщение отредактировал(а) ~FoX~ - 9.3.2009, 18:39


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
MetalFan
Дата 9.3.2009, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



~FoX~, да нет, я не про то) я не уверен на 100%, что это не правильно, но не будет ли проблемы, что звук воспроизводится АСИНХРОННО, а ресурс, из которого происходит воспроизведение убивается?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
alexamur
Дата 11.3.2009, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



Выяснилось, что миди, из ресурсов  sndPlaySound не воспроизводит. Формат .wav, .avi, mp3 воспроизводится нормально.
PM MAIL   Вверх
~FoX~
Дата 11.3.2009, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



alexamur, Идея...извлекаем фало из ресурсов, сохраняем куда нить рядышком, проигрываем через MCISendString и убиваем его...Или убиваем его перед выходом...


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
alexamur
Дата 11.3.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



Цитата(~FoX~ @  11.3.2009,  09:15 Найти цитируемый пост)
alexamur, Идея...извлекаем фало из ресурсов, сохраняем куда нить рядышком, проигрываем через MCISendString и убиваем его...Или убиваем его перед выходом... 

О-о-о...Это задачка не для первокласника(меня). На таком уровне я еще пока не умею smile 
PM MAIL   Вверх
~FoX~
Дата 12.3.2009, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



Щаз под рукой нету ничего из компиляторов, так что только идея...

Код

var 
  FS: TFileStream; 
  RS: TResourceStream; 
  RID:Integer; 

begin 
   FS := TFileStream.Create('c:\1.mid', fmCreate); 
   RS := TResourceStream.CreateFromID(Application.Handle, RID, rt_RCData); //Или Application.Instance - надо тестить,  RID - Id ресурса....
   FS.CopyFrom(RS, 0); 
   RS.Free; 
   FS.Free; 
end; 




--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
alexamur
Дата 12.3.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



Нихт арбайтен smile Исправно создает на С: миди-файл, с размером 0 байт и в ступор. Вот сообщение компилятора:[Warning] Unit1.pas(32): Variable 'RID' might not have been initialized
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R MyRes.res}
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  FS: TFileStream;
  RS: TResourceStream;
  RID: Integer;
begin
   FS := TFileStream.Create('c:\midi.mid', fmCreate);
   RS := TResourceStream.CreateFromID(Application.Handle, RID, rt_RCData);
   //Или Application.Instance - надо тестить,  RID - Id ресурса....
   FS.CopyFrom(RS, 0);
   RS.Free;
   FS.Free;
end;

end.

и еще выводится окно "Не найден ресурс p:D" smile 
PM MAIL   Вверх
MetalFan
Дата 12.3.2009, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



ну прально, у ресурса какой идентификатор?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
alexamur
Дата 12.3.2009, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.3.2009

Репутация: нет
Всего: нет




Цитата(MetalFan @  12.3.2009,  15:33 Найти цитируемый пост)
ну прально, у ресурса какой идентификатор?


1049
PM MAIL   Вверх
MetalFan
Дата 12.3.2009, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



alexamur, а в параметре RID что передается?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
alexamur
Дата 13.3.2009, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



Наверное я повеселю Вас: а как узнать ID ресурса? smile 
PM MAIL   Вверх
MetalFan
Дата 13.3.2009, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



alexamur, повеселил. какой установишь ID, такой и будет. к ресурсу можно обратиться как по имени, так и по ID.

Добавлено через 1 минуту и 46 секунд
Цитата(alexamur @  12.3.2009,  15:17 Найти цитируемый пост)
   RS := TResourceStream.CreateFromID(Application.Handle, RID, rt_RCData);
   //Или Application.Instance - надо тестить,  RID - Id ресурса....

достаточно просто указать hInstance вместо Application.Handle.
так же должна быть функция с примерным названием TResourceStream.CreateFromName


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
~FoX~
Дата 13.3.2009, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



alexamur, фиг с ним с идом....Будем рулить тем что есть под рукой  smile 
Код

  RS := TResourceStream.Create(Application.Handle, 'MYMID', rt_RCData);

Плюём на варнинг ибо не его собачье дело.... smile 


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
MetalFan
Дата 13.3.2009, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



Цитата(~FoX~ @  13.3.2009,  09:02 Найти цитируемый пост)
Application.Handle

да при чем тут хэндл приложения?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Alexeis
Дата 13.3.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



  Правильно будет не Application.Handle, HInstance - т.е. базовый адрес приложения в его виртуальном адресном пространстве или HInstance Dll если ресурс находиться в Dll.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
alexamur
Дата 13.3.2009, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



Alexeis - HInstance реально работает - спасибо
Цитата(~FoX~ @  13.3.2009,  09:02 Найти цитируемый пост)
alexamur, фиг с ним с идом....Будем рулить тем что есть под рукой  smile 
Выделить всёкод Pascal/Delphi
1:
    
  RS := TResourceStream.Create(Application.Handle, 'MYMID', rt_RCData);

Плюём на варнинг ибо не его собачье дело.... smile  
 - с Application.Handle со ссылкой на имя не работает
Сейчас компилируется без ошибок, создает из ресурса, по указанному пути, реальный миди-файл, но не воспроизводит его. Как это организовать? И чтобы после закрытия формы миди убивался?
Код

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R MyRes.res}
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
  FS: TFileStream;
  RS: TResourceStream;
  //RID: Integer;
begin
   FS := TFileStream.Create('c:\midi.mid', fmCreate);
   //RS := TResourceStream.CreateFromID(Application.Handle, RID, rt_RCData);
   //RS := TResourceStream.Create(Application.Handle, 'MYMID', rt_RCData);
   RS := TResourceStream.Create(HInstance, 'MYMID', rt_RCData);
   FS.CopyFrom(RS, 0);
   RS.Free;
   FS.Free;
end;
end.

PM MAIL   Вверх
MetalFan
Дата 13.3.2009, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



Цитата(alexamur @  13.3.2009,  14:36 Найти цитируемый пост)
но не воспроизводит его

кто он? где код воспроизведения?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
~FoX~
Дата 13.3.2009, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



Ну дык уважаемый...

Код

uses MMSystem;
//..............
procedure TForm1.FormCreate(Sender: TObject);
var
  FS: TFileStream;
  RS: TResourceStream;
  //RID: Integer;
begin
   FS := TFileStream.Create('c:\midi.mid', fmCreate);
   //RS := TResourceStream.CreateFromID(Application.Handle, RID, rt_RCData);
   //RS := TResourceStream.Create(Application.Handle, 'MYMID', rt_RCData);
   RS := TResourceStream.Create(HInstance, 'MYMID', rt_RCData);
   FS.CopyFrom(RS, 0);
   RS.Free;
   FS.Free;
   MCISendString(PChar('PLAY ' + 'c:\midi.mid'), nil, 0, 0);      //играть то чем то надо )))
end;

//А по онКлоузе соответственно угрохиваем файл

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  MCISendString(PChar('STOP' + 'c:\midi.mid'), nil, 0, 0);  //не забываем тормозить фало...
  DeleteFile('c:\midi.mid');
end;


Это сообщение отредактировал(а) ~FoX~ - 13.3.2009, 15:04


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
alexamur
Дата 13.3.2009, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



Цитата(MetalFan @  13.3.2009,  14:41 Найти цитируемый пост)
кто он? где код воспроизведения?

Так в том и вопрос, что не знаю, как заставить "петь" мидюшку. А ОН - это миди-файл. Ну "слабоват еще в коленках"...да и раньше еще говорил, что из кухонной утвари...чайник... smile

Добавлено через 3 минуты и 9 секунд
О.... сорри...пока писал я,  ответил ~FoX~ СПАСИБО. Вот сейчас поизучаю все это - отпишусь
PM MAIL   Вверх
alexamur
Дата 13.3.2009, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



Ну вот...сейчас играет вовсю, но только при закомментированной последней подпрограмме
Код

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

В принципе, play останавливать и не надо (в моем случае) - при закрытии формы и так stop. А вот удалить файл желательно. Не нашел ничего лучше, чем спрятать извлекаемый файл куда подальше. Во как ругается :
[Error] Unit1.pas(31): Undeclared identifier: 'FormClose'
[Error] Unit1.pas(31): ';' expected but ')' found
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'


PM MAIL   Вверх
~FoX~
Дата 14.3.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



alexamur, Читаем, переводим, офигиваем от собственной невнимательности...

Цитата(alexamur @  13.3.2009,  18:26 Найти цитируемый пост)
[Error] Unit1.pas(31): Undeclared identifier: 'FormClose'

Лезим в инспектор объектов, смотрим события у формы.....Дважды тыкаем на onClose, и в появившемся коде пишем все что нужно...

Цитата(alexamur @  13.3.2009,  18:26 Найти цитируемый пост)
[Error] Unit1.pas(31): ';' expected but ')' found

Проверяем количество открывающихся скобок и закрывающихся )))
 smile 

Это сообщение отредактировал(а) ~FoX~ - 14.3.2009, 22:04


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
alexamur
Дата 15.3.2009, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



Цитата(~FoX~ @  14.3.2009,  21:59 Найти цитируемый пост)
alexamur, Читаем, переводим, офигиваем от собственной невнимательности...

эт-т точно...наивно полагал, что забив все врукопашную будет работать как надо, ан нет, не декларируется таким образом событие в коде. Сейчас все работает, компилятор не ругается, но после закрытия формы миди.мид не удаляется smile 
PM MAIL   Вверх
MetalFan
Дата 15.3.2009, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



Цитата(alexamur @  15.3.2009,  16:14 Найти цитируемый пост)
но после закрытия формы миди.мид не удаляется smile  

а ты его удаляешь? или думаешь, что само должно? ))


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
alexamur
Дата 16.3.2009, 03:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



Цитата(MetalFan @  15.3.2009,  17:49 Найти цитируемый пост)
а ты его удаляешь? или думаешь, что само должно? )) 

..ну вот так прописал...
Код

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  MCISendString(PChar('STOP' + 'midi.mid'), nil, 0, 0);
  DeleteFile('midi.mid');
end;


мидюшка без абсолютного пути (чтобы нельзя было запустить с CD или заблокированных флопов, флэшек), создается рядом с ексэшником...
PM MAIL   Вверх
MetalFan
Дата 16.3.2009, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



alexamur, лучше пути пропиши, а то может достаточно непредсказуемо себя вести)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
alexamur
Дата 17.3.2009, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



Цитата(MetalFan @  16.3.2009,  12:44 Найти цитируемый пост)
alexamur, лучше пути пропиши, а то может достаточно непредсказуемо себя вести) 

А как можно указать путь извлечения, скажем в системный раздел, ведь система может быть не только на С?  Если  %system root% - то вот так не получается
PM MAIL   Вверх
~FoX~
Дата 17.3.2009, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



alexamur, Лучше все таки рядом с самой прогой хранить
Код

ExtractFilePath(Application.ExeName) + 'mymid.mid';



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
MetalFan
Дата 17.3.2009, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



Цитата(~FoX~ @  17.3.2009,  18:12 Найти цитируемый пост)
Лучше все таки рядом с самой прогой хранить

не всегда... имхо


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
bems
Дата 19.3.2009, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 1
Всего: 88



Цитата(MetalFan @  9.3.2009,  18:19 Найти цитируемый пост)
а худо от такого не будет? играем асинхронно, и сразу убиваем ресурс.... 
Маленький оффтопик: 
когда-то я делал такой фокус - грузил длл с ресурсами, получал указатель на ресурс, давал той странице разрешение на копирование при записи и менял ресурс в памяти. Потом освобождал ресурс, но не выгружал длл
После этого чужой код (который загружал этот ресурс по имени в рамках моего процесса) при загрузке ресурса получал мою измененную область. Изменения оставались до ваыгрузки длл. Это я не к тому, что так нужно делать, а к тому чтобы прояснить что присходит. С переходом на виртуальные адресные пространства (на вин95) загрузка ресурса, это всего лишь получение указателя на ресурс, который уже давно спроецирован на память вместе с модулем, где он лежит. А освобождение ресурса просто ничего не делает, и оставлено для совместимости API



--------------------
Обижено школьников: 8
PM MAIL   Вверх
MetalFan
Дата 19.3.2009, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 5
Всего: 128



bems, ну если это действительно так...
да, ты прав:
Цитата(MSDN)
The pointer returned by LockResource is valid until the module containing the resource is unloaded. It is not necessary to unlock resources because the system automatically deletes them when the process that created them terminates.
...
The FreeResource function is obsolete and is only supported for backward compatibility with 16-bit Microsoft Windows. For 32-bit Windows applications, it is not necessary to free the resources loaded using LoadResource function. For more information, see INFO: FreeResource Not Necessary to Free Resources in Win32 .


Это сообщение отредактировал(а) MetalFan - 19.3.2009, 19:31


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
alexamur
Дата 24.3.2009, 03:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



По большому счету все работает так, как мне нужно, за исключением того, что не добился удаления миди-файла после закрытия окна. Поэтому оставил все как есть. Всем большой респект! Тему можно закрывать.
PM MAIL   Вверх
AntonN
Дата 25.3.2009, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 7
Всего: 18



вот тут есть игрушка "Battle Scroller" http://desksoft.ru/index.php?files&id=3&owner=3
там миди играется из TmemoryStream, сам файл звука хранится на диске сжатым, распаковывается в память ииграется без пересохранений. Думаю не будет проблем перегнать TResourceStream в Tmemorystream, к тому же еще можно добавить сжатие (zlib) и уменьшить факт воровства файла через редакторы ресурсов.

PS В юните MidiFile нужно удалить из uses inifiles, и все что с ним связано, забыл подчистить отладочный вывод, он пытается сохранить ini в C:\


--------------------
user posted image
PM MAIL WWW   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0932 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.