Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2021, 16:17   #1
Alex Kul
Пользователь
 
Аватар для Alex Kul
 
Регистрация: 15.10.2018
Сообщений: 45
По умолчанию Остановка звука

Добрый день! Представлена программа на языке Delphi7. Это программа для работы телеграфом. Здесь представлены только 2 процедуры. Принцип работы программы следующий: Первоначально в текстовые поля вносятся данные из текстовых файлов, заранее подготовленых. При нажатии на кнопки происходит считывание текстовой информации и воспроизведение отдельных букв и цифр азбуки Морзе. Чтобы считать информацию с текстовых файлов, вызываем контекстное меню, выбираем соответствующий пункт и вставляем в поле mmo. В коде представлены 2 варианта считывания информации (в 1 варианте считывание происходит с поля mmo, а во втором варианте считывание происходит непосредственно с внесённой информации в коде). Здесь всё работает прекрасно, проблема в следующем. Иногда в процессе передачи информации необходимо остановить воспроизведение, как это сделать ничего не получается. Сделал кнопку STOP и присвоил ей следующее:

procedure TForm1.btn15Click(Sender: TObject);
begin
sndPlaySound(nil, SND_ASYNC);
end;
, но …

Помогите, если это возможно, заставить производить остановку звука в любой момент времени…

procedure TForm1.btn3Click(Sender: TObject);
begin
for i:=1 to Length(mmo7.Text) do begin
S := mmo7.Text[ i ];
if S='1' THEN
PlaySound('c/1.wav', 0, SND_SYNC);
if S='2' THEN
PlaySound('c/2.wav', 0, SND_SYNC);
if S='3' THEN
PlaySound('c/3.wav', 0, SND_SYNC);
if S='4' THEN
PlaySound('c/4.wav', 0, SND_SYNC);
if S='5' THEN
PlaySound('c/5.wav', 0, SND_SYNC);
if S='6' THEN
PlaySound('c/6.wav', 0, SND_SYNC);
if S='7' THEN
PlaySound('c/7.wav', 0, SND_SYNC);
if S='8' THEN
PlaySound('c/8.wav', 0, SND_SYNC);
if S='9' THEN
PlaySound('c/9.wav', 0, SND_SYNC);
if S='0' THEN
PlaySound('c/0.wav', 0, SND_SYNC);
if S='Q' THEN
PlaySound('c/Q.wav', 0, SND_SYNC);
if S='W' THEN
PlaySound('c/W.wav', 0, SND_SYNC);
if S='E' THEN
PlaySound('c/E.wav', 0, SND_SYNC);
if S='R' THEN
PlaySound('c/R.wav', 0, SND_SYNC);
if S='T' THEN
PlaySound('c/T.wav', 0, SND_SYNC);
if S='Y' THEN
PlaySound('c/Y.wav', 0, SND_SYNC);
if S='U' THEN
PlaySound('c/U.wav', 0, SND_SYNC);
if S='I' THEN
PlaySound('c/I.wav', 0, SND_SYNC);
if S='O' THEN
PlaySound('c/O.wav', 0, SND_SYNC);
if S='P' THEN
PlaySound('c/P.wav', 0, SND_SYNC);
if S='A' THEN
PlaySound('c/A.wav', 0, SND_SYNC);
if S='S' THEN
PlaySound('c/S.wav', 0, SND_SYNC);
if S='D' THEN
PlaySound('c/D.wav', 0, SND_SYNC);
if S='F' THEN
PlaySound('c/F.wav', 0, SND_SYNC);
if S='G' THEN
PlaySound('c/G.wav', 0, SND_SYNC);
if S='H' THEN
PlaySound('c/H.wav', 0, SND_SYNC);
if S='J' THEN
PlaySound('c/J.wav', 0, SND_SYNC);
if S='K' THEN
PlaySound('c/K.wav', 0, SND_SYNC);
if S='L' THEN
PlaySound('c/L.wav', 0, SND_SYNC);
if S='Z' THEN
PlaySound('c/Z.wav', 0, SND_SYNC);
if S='X' THEN
PlaySound('c/X.wav', 0, SND_SYNC);
if S='C' THEN
PlaySound('c/C.wav', 0, SND_SYNC);
if S='V' THEN
PlaySound('c/V.wav', 0, SND_SYNC);
if S='B' THEN
PlaySound('c/B.wav', 0, SND_SYNC);
if S='N' THEN
PlaySound('c/N.wav', 0, SND_SYNC);
if S='M' THEN
PlaySound('c/M.wav', 0, SND_SYNC);
if S='!' THEN
PlaySound('c/!.wav', 0, SND_SYNC);
if S='#' THEN
PlaySound('c/#.wav', 0, SND_SYNC);
end;
end;
procedure TForm1.btn4Click(Sender: TObject);
begin
if rg3.ItemIndex=0 then
for i:=1 to Length('CQ CQ CQ CQ CQ CQ CQ CQ CQ DE') do begin
S := 'CQ CQ CQ CQ CQ CQ CQ CQ CQ DE'[ i ];
if S='1' THEN
PlaySound('c/1.wav', 0, SND_SYNC);
if S='2' THEN
PlaySound('c/2.wav', 0, SND_SYNC);
if S='3' THEN
PlaySound('c/3.wav', 0, SND_SYNC);
if S='4' THEN
PlaySound('c/4.wav', 0, SND_SYNC);
if S='5' THEN
PlaySound('c/5.wav', 0, SND_SYNC);
if S='6' THEN
PlaySound('c/6.wav', 0, SND_SYNC);
if S='7' THEN
PlaySound('c/7.wav', 0, SND_SYNC);
if S='8' THEN
PlaySound('c/8.wav', 0, SND_SYNC);
if S='9' THEN
PlaySound('c/9.wav', 0, SND_SYNC);
if S='0' THEN
PlaySound('c/0.wav', 0, SND_SYNC);
if S='Q' THEN
PlaySound('c/Q.wav', 0, SND_SYNC);
if S='W' THEN
PlaySound('c/W.wav', 0, SND_SYNC);
if S='E' THEN
PlaySound('c/E.wav', 0, SND_SYNC);
if S='R' THEN
PlaySound('c/R.wav', 0, SND_SYNC);
if S='T' THEN
PlaySound('c/T.wav', 0, SND_SYNC);
if S='Y' THEN
PlaySound('c/Y.wav', 0, SND_SYNC);
if S='U' THEN
PlaySound('c/U.wav', 0, SND_SYNC);
if S='I' THEN
PlaySound('c/I.wav', 0, SND_SYNC);
if S='O' THEN
PlaySound('c/O.wav', 0, SND_SYNC);
if S='P' THEN
PlaySound('c/P.wav', 0, SND_SYNC);
if S='A' THEN
PlaySound('c/A.wav', 0, SND_SYNC);
if S='S' THEN
PlaySound('c/S.wav', 0, SND_SYNC);
if S='D' THEN
PlaySound('c/D.wav', 0, SND_SYNC);
if S='F' THEN
PlaySound('c/F.wav', 0, SND_SYNC);
if S='G' THEN
PlaySound('c/G.wav', 0, SND_SYNC);
if S='H' THEN
PlaySound('c/H.wav', 0, SND_SYNC);
if S='J' THEN
PlaySound('c/J.wav', 0, SND_SYNC);
if S='K' THEN
PlaySound('c/K.wav', 0, SND_SYNC);
if S='L' THEN
PlaySound('c/L.wav', 0, SND_SYNC);
if S='Z' THEN
PlaySound('c/Z.wav', 0, SND_SYNC);
if S='X' THEN
PlaySound('c/X.wav', 0, SND_SYNC);
if S='C' THEN
PlaySound('c/C.wav', 0, SND_SYNC);
if S='V' THEN
PlaySound('c/V.wav', 0, SND_SYNC);
if S='B' THEN
PlaySound('c/B.wav', 0, SND_SYNC);
if S='N' THEN
PlaySound('c/N.wav', 0, SND_SYNC);
if S='M' THEN
PlaySound('c/M.wav', 0, SND_SYNC);
if S='!' THEN
PlaySound('c/!.wav', 0, SND_SYNC);
if S='#' THEN
PlaySound('c/#.wav', 0, SND_SYNC);
end;
Программа прилагается, весь код можно посмотреть в ней. С уважением Александр…
Изображения
Тип файла: png 001.png (31.8 Кб, 25 просмотров)
Вложения
Тип файла: rar Звук3.rar (1.39 Мб, 4 просмотров)
Alex Kul вне форума Ответить с цитированием
Старый 22.03.2021, 21:37   #2
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Попробуй
Код:
PlaySound(0, 0, SND_PURGE);
Shouldercannon вне форума Ответить с цитированием
Старый 22.03.2021, 22:14   #3
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Радиолюбители появились !
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Старый 23.03.2021, 06:19   #4
Alex Kul
Пользователь
 
Аватар для Alex Kul
 
Регистрация: 15.10.2018
Сообщений: 45
По умолчанию

PlaySound(0, 0, SND_PURGE); Данный код попробовал, буквы и цифры проигрываются, но результата нет...
Alex Kul вне форума Ответить с цитированием
Старый 23.03.2021, 10:30   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Цитата:
Сообщение от zvygin1964 Посмотреть сообщение
Радиолюбители появились !
Неужели ещё кто на КВ Морзями балуется? Реликты...
digitalis вне форума Ответить с цитированием
Старый 23.03.2021, 16:13   #6
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

УКВ,
позывной RK3RWA закрыт

Анатолий Владимирович Бойцов
Тамбов Россия


RK4FWA активность в 2008 году.
Репутация: полный "0"

Последний раз редактировалось zvygin1964; 23.03.2021 в 16:17.
zvygin1964 вне форума Ответить с цитированием
Старый 23.03.2021, 18:30   #7
Alex Kul
Пользователь
 
Аватар для Alex Kul
 
Регистрация: 15.10.2018
Сообщений: 45
По умолчанию

Да, да я с Вами полностью согласен насчёт закрытого позывного (просто это старая информация, которая осталась в моей памяти, насчёт RK4FWA также с Вами согласен, активность 2008, сейчас не знаю) ...

Последний раз редактировалось Alex Kul; 23.03.2021 в 18:33.
Alex Kul вне форума Ответить с цитированием
Старый 23.03.2021, 21:19   #8
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Я останавливал звук так:
Код:
PlaySound(nil,0,0);
northener вне форума Ответить с цитированием
Старый 23.03.2021, 21:42   #9
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Из-за того что звуки проигрывается в основном потоке и ещё в цикле равном длине текста программа повисает и пытаться нажать что-либо ещё уже не смысла.
Shouldercannon вне форума Ответить с цитированием
Старый 24.03.2021, 02:45   #10
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Из-за того что звуки проигрывается в основном потоке и ещё в цикле равном длине текста программа повисает и пытаться нажать что-либо ещё уже не смысла.
Сам придумал? Или в помойке нарыл?
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа-синтезатор + исходники на гитхаб - как пример использования вывода звука через ASIO, вообще генерации звука как такового zx3267 Visual C++ 0 09.02.2020 10:05
Flash - Воспроизведение и остановка потокового звука (радио) cargo29 Общие вопросы Web 0 04.11.2015 16:08
Остановка ф-ции L6go1as JavaScript, Ajax 1 22.04.2015 00:21
Мгновенная остановка звука xAVATARx Мультимедиа в Delphi 0 04.06.2012 01:32
Остановка служб. SanekIrk Win Api 5 23.10.2009 13:37