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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 3 126

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

Доброго времени суток, уважаемые эксперты!
Помогите пожалуйста.Где ошибка?
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
volume := $FFFF * (TrackBar1.Max - TrackBar1.Position);
volume := volume + (volume shl 16);
WaveOutSetVolume(WAVE_MAPPER,volume);
end;
end.
Работает просто как выключатель ,т е как положено в нижнем положении звука нет.Сдвигаю на одно положение - звук появляется но остальные 8 полжений остается на одинаковом уровне

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

Вопрос задал: igoriy (статус: Посетитель)
Вопрос отправлен: 26 августа 2009, 18:38
Состояние вопроса: открыт, ответов: 0.


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

Всего сообщений: 15; последнее сообщение — 27 августа 2009, 17:26; участников в обсуждении: 5.
min@y™

min@y™ (статус: Доктор наук), 26 августа 2009, 19:07 [#1]:

А ты справку по этой функции читал?
Там много интересного. Старшее слово - это уровень правого канала, младшее - левого. А теперь посмотри, что за бред у тебя получается в результате операций
volume := $FFFF * (TrackBar1.Max - TrackBar1.Position);
volume := volume + (volume shl 16);
Громкость каждого канала варьируется от $0000 до $FFFF. Признавайся, где скопипастил код?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 26 августа 2009, 19:11 [#2]:

Попробуй вместо
volume := $FFFF * (TrackBar1.Max - TrackBar1.Position);
написать
volume := Round($FFFF * (TrackBar1.Position / TrackBar1.Max));
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
igoriy

igoriy (статус: Посетитель), 26 августа 2009, 19:22 [#3]:

Громкость каждого канала варьируется от $0000 до $FFFF. Признавайся, где скопипастил код? Так не где а из учебника того же Культина С которым вчера то же обращался Я ж пытаюсь учиться а если он изначально такому учит то я уж не знаю что и делать
igoriy

igoriy (статус: Посетитель), 26 августа 2009, 19:31 [#4]:

Поменял строку volume := $FFFF * (TrackBar1.Max - TrackBar1.Position); на volume := Round($FFFF * (TrackBar1.Position / TrackBar1.Max)); И при запуске из Delphi получил вот что:
Debugger detected - please close it down and restart!
Windows NT users: Please note that having the Winlce/Softlce service Installed means that you are running a debugger!
Вадим К

Вадим К (статус: Академик), 26 августа 2009, 19:42 [#5]:

Это глюк винды. хотя может быть какого то из кодеков звука/видео. Сам натыкался на это.
Mediaplayer или Bass.dll? у меня с медиаплеером воспроизводилось.
Галочка "подтверждения прочтения" - вселенское зло.

26 августа 2009, 19:47: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Мультимедийные приложения модератором Ерёмин А.А. Причина: работаем со звуком.

igoriy

igoriy (статус: Посетитель), 26 августа 2009, 19:54 [#6]:

Перезагрузился и все нормально стало.Именно в Mediaplayer выскакивало.так вот строку поменял- все заработало только наоборот сверху-вниз увеличивается громкость
igoriy

igoriy (статус: Посетитель), 26 августа 2009, 19:56 [#7]:

А еще объясните пожалуйста понятие - старшее слово и младшее, а то что-то я этой книге все меньше доверяю
Вадим К

Вадим К (статус: Академик), 26 августа 2009, 21:10 [#8]:

в переменной Integer (для 32битных систем) 4 байта или 2 слова (одно слово - два байта).
левое слово называется старшим, правое - младшим. ничего сверхъестественного. другими словами, первые 16 бит записи будут старшим словом, следующие 16 бит - младшим.
Галочка "подтверждения прочтения" - вселенское зло.
Amidamaru

Amidamaru (статус: 4-ый класс), 26 августа 2009, 21:22 [#9]:

Вместо
volume := volume + (volume shl 16);
помоему проще и удобнее использовать MakeLong:
volume := MakeLong(volume,volume);
или вообще без этой строчки:
WaveOutSetVolume(WAVE_MAPPER,MakeLong(volume,volume));
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.
igoriy

igoriy (статус: Посетитель), 27 августа 2009, 11:48 [#10]:

Большое всем спасибо!!!
min@y™

min@y™ (статус: Доктор наук), 27 августа 2009, 16:29 [#11]:

"Спасибо" — это много. Достаточно пива.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
igoriy

igoriy (статус: Посетитель), 27 августа 2009, 16:55 [#12]:

Ты слишком постоянен.Я уже предлагал, а ты сказал не стоит
min@y™

min@y™ (статус: Доктор наук), 27 августа 2009, 17:16 [#13]:

Цитата:


Я уже предлагал, а ты сказал не стоит


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

igoriy (статус: Посетитель), 27 августа 2009, 17:22 [#14]:

Я уж точно не помню , но месяц - полтора назад я с очередным вопросиком обращался, помоему по поводу перетаскивания формы.А ты сказал что только что из магазина и с пивом
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 27 августа 2009, 17:26 [#15]:

Господа, идите в личку. Дальнейшие сообщения не по теме будут караться замечаниями.

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

Версия движка: 2.6+ (26.01.2011)
Текущее время: 24 мая 2022, 03:37
Выполнено за 0.03 сек.
Рейтинг@Mail.ru