Форум: "Основная";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];
ВнизЗапуск видеоролика в отдельном потоке Найти похожие ветки
← →
Антоныч © (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c