|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.03.2021, 16:17 | #1 |
Пользователь
Регистрация: 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; Программа прилагается, весь код можно посмотреть в ней. С уважением Александр… |
22.03.2021, 21:37 | #2 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,893
|
Попробуй
Код:
|
22.03.2021, 22:14 | #3 |
Старожил
Регистрация: 19.06.2013
Сообщений: 2,463
|
Радиолюбители появились !
Репутация: полный "0"
|
23.03.2021, 06:19 | #4 |
Пользователь
Регистрация: 15.10.2018
Сообщений: 45
|
PlaySound(0, 0, SND_PURGE); Данный код попробовал, буквы и цифры проигрываются, но результата нет...
|
23.03.2021, 10:30 | #5 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,536
|
|
23.03.2021, 16:13 | #6 |
Старожил
Регистрация: 19.06.2013
Сообщений: 2,463
|
УКВ,
позывной RK3RWA закрыт Анатолий Владимирович Бойцов Тамбов Россия RK4FWA активность в 2008 году.
Репутация: полный "0"
Последний раз редактировалось zvygin1964; 23.03.2021 в 16:17. |
23.03.2021, 18:30 | #7 |
Пользователь
Регистрация: 15.10.2018
Сообщений: 45
|
Да, да я с Вами полностью согласен насчёт закрытого позывного (просто это старая информация, которая осталась в моей памяти, насчёт RK4FWA также с Вами согласен, активность 2008, сейчас не знаю) ...
Последний раз редактировалось Alex Kul; 23.03.2021 в 18:33. |
23.03.2021, 21:19 | #8 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,859
|
Я останавливал звук так:
Код:
|
23.03.2021, 21:42 | #9 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,893
|
Из-за того что звуки проигрывается в основном потоке и ещё в цикле равном длине текста программа повисает и пытаться нажать что-либо ещё уже не смысла.
|
24.03.2021, 02:45 | #10 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,859
|
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа-синтезатор + исходники на гитхаб - как пример использования вывода звука через 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 |