|
Вопрос # 3 660/ вопрос открыт / |
|
Здравствуйте, эксперты!
Подскажите, пожалуйста, как обратится к ресурсу программы напрямую, что бы не сохранять файлы 1.wav и 1.bmp на диске?
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
Приложение: Переключить в обычный режим- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, ExtCtrls, MPlayer;
-
- type
- TForm1 = class(TForm)
- Timer1: TTimer;
- MediaPlayer1: TMediaPlayer;
- procedure FormCreate(Sender: TObject);
- procedure Timer1Timer(Sender: TObject);
- procedure FormClick(Sender: TObject);
- procedure FormActivate(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- const
-
-
- var
- Form1: TForm1;
-
-
-
-
-
- implementation
-
- {$R *.dfm}
-
-
-
- procedure ExtractRes(ResType, ResName, ResNewName : String);
- var
- Res : TResourceStream;
- Begin
-
-
- Res:=TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
- Res.SavetoFile(ResNewName);
- Res.Free;
- end;
-
-
-
- procedure DrawKadr;
- begin
-
- RectKadr:=Bounds(WKadr*CKadr,0,WKadr,HKadr);
-
- Form1.Canvas.CopyRect(Rect1,Film.Canvas,RectKadr);
-
- CKadr := CKadr+1;
- if CKadr = N_KADR
- then
- CKadr:=0;
- end;
-
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- ExtractRes('RT_RCDATA', 'SOUND','1.wav');
- ExtractRes('RT_BITMAP', 'BMP1', '1.bmp');
- ClientHeight := 187;
- ClientWidth := 149;
- end;
-
- procedure TForm1.Timer1Timer(Sender: TObject);
- begin
- DrawKadr;
- end;
- procedure TForm1.FormClick(Sender: TObject);
- begin
- Close;
- end;
- procedure TForm1.FormActivate(Sender: TObject);
- begin
- Film := TBitMap.Create;
- Film.LoadFromFile(FILMFILE);
- WKadr := Round(Film.Width/N_Kadr);
- HKadr := Film.Height;
- Rect1 := Bounds(0,0,WKadr,HKadr);
- Ckadr:=0;
-
- Timer1.Enabled:=True;
- MediaPlayer1.FileName := '1.wav';
- MediaPlayer1.Open;
- MediaPlayer1.Play;
- end;
- end.
-
 |
Вопрос задал: Kyran29 (статус: Посетитель)
Вопрос отправлен: 17 января 2010, 05:32
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: min@y™
Создаёшь файл ресурсов *.res, в котором будут содержаться нужные файлы. Файлы ресурсов создаются с помощью утилиты brcc32.exe. Работу с утилитой описывать не буду, ибо этих описаний в инете на каждом углу полно, достаточно набрать в гугле "использование brcc32.exe".
Прицепляешь полученный файл к проекту {$R <имя файла>.res} и компилишь проект.
Чтобы извлечь данные из ресурсов, можно использовать, например, TResourceStream. После этого с данными можно делать всё, что угодно: воспроизвести, выгрузить на диск, передать по емейлу и т.п.
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 17 января 2010, 10:13
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: Вадим К
Здравствуйте, Kyran29!
Не знаю, получиться ли с плеером, но с броузером точно получалось. И можно было просматривать html странички, сохраненные в исполнимом файле. Для этого использовался протокол res. почитайте здесь для начала http://forum.sources.ru/index.php?showtopic=291324 , а дальше гугл по словам "протокол res". Мне кажется, что медиаплеер должен подхватить видео с файла.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 17 января 2010, 14:04
Оценка за ответ: 4
|
Мини-форум вопроса
Всего сообщений: 7; последнее сообщение — 18 января 2010, 23:09; участников в обсуждении: 2.
|
Kyran29 (статус: Посетитель), 17 января 2010, 15:36 [#1]:
Здравствуйте, min@y™!
Создаёшь файл ресурсов *.res, в котором будут содержаться нужные файлы.
Файл *.res, уже создан. См. код. Чтобы сделать графику и произвести звук. Я из файла – EXE из ресурса сохраняю на диск файл 1.wav, 1.bmp. А после перерисовываю картинку и запускаю звук. Мне бы хотелось сразу обратится к ресурсу файла – EXE без промежуточного сохранения файлов 1.wav, 1.bmp на диске. Можно ли что-либо изменить в коде см. выше.
|
|
min@y™ (статус: Доктор наук), 17 января 2010, 15:50 [#2]:
Так, на счёт bmp всё предельно ясно: у TBitmap есть методы LoadFromResourceID(), LoadFromResourceName(), LoadFromStream(). Тут ничего объяснять не надо.
Wav проиграть из ресурса тоже труда не составляет. Я написал несколько программ, которые это делают, могу прислать примерчик. Вот кусок кода проигрывания звука из ресурса, вынесенный, естественно, в отдельный Thread:
uses MMSystem, ...;
PlaySound(<имя_ресурса>, hInstance, SND_RESOURCE or SND_SYNC);
Твой код не смотрел.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Kyran29 (статус: Посетитель), 17 января 2010, 18:16 [#3]:
min@y™
Я написал несколько программ, которые это делают, могу прислать примерчик
Пришли если не трудно.
|
|
min@y™ (статус: Доктор наук), 17 января 2010, 19:10 [#4]:
Цитата (Kyran29):
Пришли если не трудно.
В куда слать-то?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Kyran29 (статус: Посетитель), 17 января 2010, 19:34 [#5]:
min@y™
isxodniki@mail.ru
В сюда шли.
|
|
min@y™ (статус: Доктор наук), 17 января 2010, 19:49 [#6]:
Отправил. Заодно прогу зацени. Может, её выкласть куданить для публичного скачивания?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|