Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 660

/ вопрос открыт /

Здравствуйте, эксперты!

Подскажите, пожалуйста, как обратится к ресурсу программы напрямую, что бы не сохранять файлы 1.wav и 1.bmp на диске?

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, StdCtrls, ExtCtrls, MPlayer;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. Timer1: TTimer;
  12. MediaPlayer1: TMediaPlayer;
  13. procedure FormCreate(Sender: TObject);
  14. procedure Timer1Timer(Sender: TObject);
  15. procedure FormClick(Sender: TObject);
  16. procedure FormActivate(Sender: TObject);
  17. private
  18. { Private declarations }
  19. public
  20. { Public declarations }
  21. end;
  22. const
  23.  
  24.  
  25. var
  26. Form1: TForm1;
  27.  
  28.  
  29.  
  30.  
  31.  
  32. implementation
  33.  
  34. {$R *.dfm}
  35.  
  36.  
  37.  
  38. procedure ExtractRes(ResType, ResName, ResNewName : String);
  39. var
  40. Res : TResourceStream;
  41. Begin
  42.  
  43.  
  44. Res:=TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
  45. Res.SavetoFile(ResNewName);
  46. Res.Free;
  47. end;
  48.  
  49.  
  50.  
  51. procedure DrawKadr;
  52. begin
  53.  
  54. RectKadr:=Bounds(WKadr*CKadr,0,WKadr,HKadr);
  55.  
  56. Form1.Canvas.CopyRect(Rect1,Film.Canvas,RectKadr);
  57.  
  58. CKadr := CKadr+1;
  59. if CKadr = N_KADR
  60. then
  61. CKadr:=0;
  62. end;
  63.  
  64. procedure TForm1.FormCreate(Sender: TObject);
  65. begin
  66. ExtractRes('RT_RCDATA', 'SOUND','1.wav');
  67. ExtractRes('RT_BITMAP', 'BMP1', '1.bmp');
  68. ClientHeight := 187;
  69. ClientWidth := 149;
  70. end;
  71.  
  72. procedure TForm1.Timer1Timer(Sender: TObject);
  73. begin
  74. DrawKadr;
  75. end;
  76. procedure TForm1.FormClick(Sender: TObject);
  77. begin
  78. Close;
  79. end;
  80. procedure TForm1.FormActivate(Sender: TObject);
  81. begin
  82. Film := TBitMap.Create;
  83. Film.LoadFromFile(FILMFILE);
  84. WKadr := Round(Film.Width/N_Kadr);
  85. HKadr := Film.Height;
  86. Rect1 := Bounds(0,0,WKadr,HKadr);
  87. Ckadr:=0;
  88.  
  89. Timer1.Enabled:=True;
  90. MediaPlayer1.FileName := '1.wav';
  91. MediaPlayer1.Open;
  92. MediaPlayer1.Play;
  93. end;
  94. end.
  95.  


Kyran29 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

Kyran29 (статус: Посетитель), 17 января 2010, 15:36 [#1]:

Здравствуйте, min@y™!
Создаёшь файл ресурсов *.res, в котором будут содержаться нужные файлы.

Файл *.res, уже создан. См. код. Чтобы сделать графику и произвести звук. Я из файла – EXE из ресурса сохраняю на диск файл 1.wav, 1.bmp. А после перерисовываю картинку и запускаю звук. Мне бы хотелось сразу обратится к ресурсу файла – EXE без промежуточного сохранения файлов 1.wav, 1.bmp на диске. Можно ли что-либо изменить в коде см. выше.
min@y™

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

Kyran29 (статус: Посетитель), 17 января 2010, 18:16 [#3]:

min@y™

Я написал несколько программ, которые это делают, могу прислать примерчик

Пришли если не трудно.
min@y™

min@y™ (статус: Доктор наук), 17 января 2010, 19:10 [#4]:

Цитата (Kyran29):

Пришли если не трудно.

В куда слать-то?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Kyran29

Kyran29 (статус: Посетитель), 17 января 2010, 19:34 [#5]:

min@y™

isxodniki@mail.ru

В сюда шли.
min@y™

min@y™ (статус: Доктор наук), 17 января 2010, 19:49 [#6]:

Отправил. Заодно прогу зацени. Может, её выкласть куданить для публичного скачивания?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Kyran29

Kyran29 (статус: Посетитель), 18 января 2010, 23:09 [#7]:

Спасибо min@y™ !

Прога КЛАСС !!!
Куданить, выкладу для публичного скачивания !
Вот сылочка кому интересно. (По этой теме)
http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=73189

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:27
Выполнено за 0.03 сек.