SB
Size: a a a
SB
SB
Ш
Ш
SB
SB
Ш
Ш
SB
Ш
AK
S
procedure TFm.PlaySound(SoundName:string);Есть такая конструкция - воспроизводит звук по имени файла. В самом начале проверяю, есть ли экземпляр мплеера, дабы не создать его второй раз и не запустить звук параллельно с уже идущим, всё хорошо работает и воспроизводит. НО! Мне понадобилось запускать в обработчике собырия хттп сервера
begin
if mPlayer<>nil then
begin
mPlayer.Destroy;
end;
if not CbPlaySound.Checked then exit;// выходим, если в настройках не воспроизводить звук
if (FileExists(SoundName+'.mp3'))
then
begin
mPlayer:=TMCIPlayer.Create(SoundName+'.mp3',fm.Handle);
_sleep(StrToint(EdSoundDelay.text));
mPlayer.Play;
Fm.Richout('play: '+SoundName+'.mp3', clBlack, [fsBold]);
end
else Fm.Richout('File not found: '+SoundName+'.mp3', clBlack, [fsBold]);
end;
procedure TFm.IdHTTPServer1CommandGet(AContext: TIdContext;И если я два раза подряд посылаю команду запустить звук, то запускается параллельно два трека. Предполагаю, что это из-за того, что сервер работает в отдельном потоке и при запуске в этом новом потоке, ничего не знает об уже созданном
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
mPlayerкак отследить что воспроизведение звука уже запущено в другом потоке?
S
RS
S
if mPlayer<>nil then
begin
mPlayer.Destroy;
end
;RS
S
S
RS
RS