Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-1125475345
ПЛОВ
2005-08-31 12:02
2005.09.25
Поможите, что значит " /= " в Си


1-1125474099
lock
2005-08-31 11:41
2005.09.25
TBitmap в TSream


2-1124305845
Привет
2005-08-17 23:10
2005.09.25
Динамическое создание кнопок


2-1124193237
Alol
2005-08-16 15:53
2005.09.25
Как удалить escape-строку


14-1125469580
12DFBDDh
2005-08-31 10:26
2005.09.25
Кодовая страница cp866





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский