Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

MediaPlayer и TCPServer [D7, XP]


Квэнди ©   (2007-07-13 15:34:00) 

Исопльзую вот такой код:
procedure TForm13.Button1Click(Sender: TObject);
begin
MediaPlayer1.FileName:='D:\Documents and Settings\Pavel\Рабочий стол\eva.mp3';
MediaPlayer1.Open;
MediaPlayer1.Play;
end;

procedure TForm13.IdTCPServer1Connect(AThread: TIdPeerThread);
begin
AThread.Connection.Write('f');
end;

procedure TForm13.IdTCPServer1Execute(AThread: TIdPeerThread);
var s:string;
begin
s:=trim(AThread.Connection.Readln);
if pos('pause',s)<>0 then
 MediaPlayer1.Pause;
AThread.Connection.Disconnect;
end;

проверяю, запускаю, начинает проигрываться файл, захожу к себе телнетом на порт, который биндю, посылаю паузу (при трассировке видно, что событие срабатывает, условие корректно) , выполняется строка MediaPlayer1.Pause; но музыка как игралась, так и играется дальше. Не подскажете в чем проблема и как это решить ?


Сергей М.   (2007-07-13 15:45:00) [1]


> Через синхронайз или как ?


До "синхронайза" ты вряд ли просто так доберешься.

Есть резон слать форме с пом. PostMessage() некое предопределенное сообщение а-ля MYMESSAGE_PAUSE, по получении которого форма в коде обработчика этого сообщения собссно и переведет плейер в требуемое состояние


Квэнди   (2007-07-13 15:41:00) [2]

Через синхронайз или как ? можете описать примером ?


Сергей М.   (2007-07-13 15:38:00) [3]


> в чем проблема


В том что обработчик OnExecute выполняется НЕ в основном потоке.


> как это решить ?


Вызывать методы плейера в том же потоке, в котором он был тобой создан - в основном.


Наверх

Титульная страница Поиск, карта сайта Написать письмо