Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.25;
Скачать: CL | DM;

Вниз

Запуск видеоролика в отдельном потоке   Найти похожие ветки 

 
Антоныч ©   (2005-08-31 11:04) [0]

Раньше с потоками работать не приходилось, поэтому решил свой вопрос закинуть в эту конференцию. У меня есть форма-заставка, которая появляется, пока загружается основная программа. Решил поместить небольшой видеоролик, который проигрывался бы в отдельном потоке, пока идет загрузка. Вот код:
Файл .dpr:
program kab_mas;

uses ...

begin
 // форма-заставка
 SPLForm := TSPLForm.Create(Application);
 SPLForm.Show;
 SPLForm.UpdForm(0);
 SPLForm.Update;
 Application.Initialize;
 Application.CreateForm(TDM, DM);
 SPLForm.UpdForm(1);
 SPLForm.Update;
 Application.CreateForm(TForm1, Form1);
 SPLForm.UpdForm(2);
 SPLForm.Update;
 ...
 SPLForm.Free;
 Application.Run;
end.


Файл заставки:

type
 TSPLForm = class(TForm)
...
 end;

 TVideo = class (TThread)
 protected
   procedure Execute; override;
   procedure PlayVideo;
 end;

var
 SPLForm: TSPLForm;
 VideoRolic: TVideo;

implementation

{$R *.dfm}

procedure TSPLForm.UpDForm(i: integer);
begin
 case i of
 0: Label2.Caption:="Подключение к базам данных...";
 1: Label2.Caption:="Обработка баз данных...";
 ...
 end;
end;

procedure TSPLForm.FormCreate(Sender: TObject);
begin
 VideoRolic:=TVideo.Create(False);
end;

procedure TVideo.Execute;
begin
 Synchronize(PlayVideo);
end;

procedure TVideo.PlayVideo;
begin
 SPLForm.MediaPlayer1.Play;
end;

end.


Так вот, видео не проигрывается, а в программе после закрытия формы-заставки вылетает Access Violation. Подскажите, что я не так делаю?


 
Digitman ©   (2005-08-31 11:39) [1]


> что я не так делаю?


все.

более того - непонятно, зачем вообще здесь нужен дополнительный поток


 
Антоныч ©   (2005-08-31 12:03) [2]

А без потока пишет ошибку "Could not initialize MCI device" (или что-то вроде того :) )


 
Digitman ©   (2005-08-31 12:18) [3]


> без потока пишет ошибку


а где написано, что именно использование доп.потока устраняет эту (или "что-то вроде того") ошибку ?

ты даже ее источник не сподобился выяснить, и уже ничтоже сумняшеся принял решение присандалить к проекту доп.поток)


> или что-то вроде того


уж не "No MCI device open" ли ?
если так, то то вполне объяснимо - перед Play нужно ввыполнить Open, а ты его нигде судя по приведенному коду не выполняешь


 
Erik1 ©   (2005-08-31 17:34) [4]

Прикольный код и выполняется в основном потоке.


 
Котик Бегемотик   (2005-09-01 09:08) [5]

>Подскажите, что я не так делаю?

Вот это SPLForm.MediaPlayer1.Play; - на этом месте по идее должен отрисовываться только один кадр.

Посмотри исходники TAnimate а также TAnimatedImage и TRxGIFAnimator из RX Library - многие вопросы отпадут сами собой :)

PS: А вообще считаю использование видеовставок на сплеш-форме плохим тоном ...


 
Антоныч ©   (2005-09-01 12:24) [6]

Спасибо, MediaPlayer1.Open помогло :)


 
Digitman ©   (2005-09-01 12:51) [7]


> Антоныч ©   (01.09.05 12:24) [6]
> Спасибо, MediaPlayer1.Open помогло


неужели ?

могло бы помочь и гораздо раньше, если бы ты справку читал, в которой черным по белому написано :

Play method (TMediaPlayer)
..
Plays the media loaded in the open multimedia device



Страницы: 1 вся ветка

Текущий архив: 2005.09.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.574 c
2-1124097041
root187
2005-08-15 13:10
2005.09.25
ustanovka BDE


6-1117279379
KorvinOE
2005-05-28 15:22
2005.09.25
Выставить TimeOut для входящих у IdTCPServer


9-1116158701
OSokin
2005-05-15 16:05
2005.09.25
Альфа, подсветка и поворот с DirectX


2-1124097248
Прямая извилина
2005-08-15 13:14
2005.09.25
Net Send 172.16.120.3 Privet ! Kak Sam?


2-1124159259
Дырчик
2005-08-16 06:27
2005.09.25
Автоинкремент