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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 3 042

/ вопрос решён /

Здравствуйте!
Необходимо при клике мышью по любому месту формы воспроизвести звук MySound лежащий в ресурсах в папке SND_RESOURCE, этот же звук необходимо воспроизводить при клике по Image. Delphi 2009 если это имеет значение.

Pessimist Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Pessimist (статус: Посетитель)
Вопрос отправлен: 25 июля 2009, 16:48
Состояние вопроса: решён, ответов: 2.

Ответ #1. Отвечает эксперт: min@y™

Есть не мало статей с примерами на тему проигрывания звука из ресурсов.
Вот одна из них.

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 25 июля 2009, 17:12
Оценка за ответ: 5

Комментарий к оценке: Спасибо, искал сам сонный, не замечал модуль который надо подключить, а тут он 1, сразу заметил и код стал рабочим. Еще раз спасибо

Ответ #2. Отвечает эксперт: Ученый

Здравствуйте, Pessimist!
Вообщем делай так:
Открываешь блокнот и пишешь:
MYWAVFILE WAVE MYWAVFILE.Wav
где MYWAVFILE.Wav это имя файла звука.
Далее сохраняешь это все в Res.RC, кидаешь его в папку с проектом, тудаже кидаешь файл со звуком MYWAVFILE.Wav
Далее запускаешь Проект, в Project Manager правой кнопкой на проекте и выбираете add, в окне выбираете Res.RC
Дальше в Юните пишешь:

unit ResProverka;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MMSystem;
 
type
TForm1 = class(TForm)
procedure FormClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
 
var
Form1: TForm1;
 
implementation
 
{$R *.dfm}
{$R res.res}
procedure TForm1.FormClick(Sender: TObject);
begin
PlaySound('MyWavFile', Hinstance, SND_RESOURCE);
end;
 
end.
Компилируешь и вауаля....

Ответ отправил: Ученый (статус: 8-ой класс)
Время отправки: 25 июля 2009, 19:59
Оценка за ответ: 5

Комментарий к оценке: Сработало, спасибо.

Мини-форум вопроса

Всего сообщений: 15; последнее сообщение — 25 июля 2009, 20:21; участников в обсуждении: 3.
Pessimist

Pessimist (статус: Посетитель), 25 июля 2009, 17:31 [#1]:

Что-то я поторопился....код рабочий а звука нет....ладно буду думать.
Pessimist

Pessimist (статус: Посетитель), 25 июля 2009, 19:05 [#2]:

бред какой-то разве PlaySound('MyWavFile', hinstance, SND_RESOURCE); не должен воспроизводить из ресурса звуковой файл MyWavFile?
Ученый

Ученый (статус: 8-ой класс), 25 июля 2009, 19:06 [#3]:

Pessimist, код в студию, и строку из RC файла.
Pessimist

Pessimist (статус: Посетитель), 25 июля 2009, 19:20 [#4]:

В том приложении слишком большой код, создал новое, но с той же сутью, при клике по форме должен воспроизводится звук

unit ResProverka;

interface

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

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

var
Form1: TForm1;

implementation

{$R *.dfm}
{$R res.res}
procedure TForm1.FormClick(Sender: TObject);
begin
PlaySound('MyWavFile', Hinstance, SND_RESOURCE);
end;

end.

В res.res подсунул файл с помощью редактора ресурсов(всегда получалось) тип SND_RESOURCE, сам ресурс MYWAVFILE.
Pessimist

Pessimist (статус: Посетитель), 25 июля 2009, 19:25 [#5]:

воспроизведение с файла получается а вот с ресурса как то не очень. То просто пик вместо того, что нужно, то ничего.
Ученый

Ученый (статус: 8-ой класс), 25 июля 2009, 19:27 [#6]:

кинь res файл, попытаюсь сам посмотреть..
Pessimist

Pessimist (статус: Посетитель), 25 июля 2009, 19:33 [#7]:

http://file.qip.ru/file/95941358/b416b2db/Res.html
Ученый

Ученый (статус: 8-ой класс), 25 июля 2009, 19:46 [#8]:

слушай, а где ты видел такой тип ресурсов SND_RESOURCE? и зачем тебе редактор ресурсов, когда в делфи 2009 уже есть такая возможность создавать ресурсы. если хочешь научу как создавать, за одно и укажу где ошибка твоя?
Pessimist

Pessimist (статус: Посетитель), 25 июля 2009, 19:53 [#9]:

Ну SND_RESORCE он так сам переименовывает после компилирования и в ехе уже пишется SND_RESOURCE независимо от того какой я тип ресурса указываю.
Pessimist

Pessimist (статус: Посетитель), 25 июля 2009, 19:54 [#10]:

ну да легко добавляет, щас заметил, просто не пользуюсь обычно 2009, понадобилась одна особенность.
Pessimist

Pessimist (статус: Посетитель), 25 июля 2009, 19:58 [#11]:

или я снова что-то не так понял..ресурс добавлять через проджэект - ресурсэс?
Ученый

Ученый (статус: 8-ой класс), 25 июля 2009, 20:12 [#12]:

А вообще от себя добавлю что это не самы лучший способ воспроизведения. Дело втом что при таком методе воспроизведения программа будет зависать до тех пор пока не будет окончено проигрывание файла. Так что совет запихать код воспроизведения в поток.
min@y™

min@y™ (статус: Доктор наук), 25 июля 2009, 20:16 [#13]:

Кароче сделаем так. У меня есть готовый класс, который умеет проговаривать голосом время (часы и минуты). Для разработки класса мной было написано тестовое приложение и распотрошена на ресурсы одна DLL-ка от программы Multilingual Speaking Clock (спасибо авторам, что записали голос, чтоб я не мучался с записью своего прокуренного баса).
Могу прислать тебе этот класс вместе с ремурсами и тестовым приложением, чтобы по образу и подобию ты решил все свои проблемы.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 25 июля 2009, 20:18 [#14]:

Цитата (Ученый):


Так что совет запихать код воспроизведения в поток.

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

Pessimist (статус: Посетитель), 25 июля 2009, 20:21 [#15]:

ну я знаю что зависать будет, я в реальном приложени добавил OR SND_ASYNC.
Теперь бы еще понять как курсор добавить)

31 января 2011, 19:36: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

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

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