/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Multithread
Fra : Wiljan


Dato : 28-02-06 19:39

Hej gruppe

Jeg er ved at lave en multimedia aplikation i D7 med videoafvikling og RSS
newsreader.

Her har jeg en form med et panel hvor jeg starter et videoklip med tryk på
en knap.

procedure TForm1.Button2Click(Sender: TObject);
begin
mediaplayer1.FileName:=('c:\test.mpg');
mediaplayer1.Display:=panel1;
mediaplayer1.Open;
mediaplayer1.Play;
end;

desuden har jeg en Label på formen der laver ec crawl text ved hjælp af en
timer på 40ms

procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption:='Test';
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
i:=i+2;
label1.Left:=form1.Width-i;
if i>=form1.Width then i:=1;
end;

Labelen crawler fint hen over skærmen .... men ikke når man starter
videoklippet, her går crawl i stå mens der loades data fra harddisken mm.

Man kunne så tro at det bare er en sløv PC men hvis jeg åbner mit program 2
gange så kører crawlteksten fint i det andet program, mens der loades data i
det første program.

Det får mig til at forstå at mit program kun kører som 1 thread og derfor
venter programmet på at load af data bliver færdig.

Jeg kunne nu meget godt tænke mig at loade data i en seperat thread og måske
også have crawl i sin egen thread da programmet også skal lave andre ting ,
jeg håber her er en der kan forklare på simpelt vis hvordan man går det??

Hilsen Wiljan







 
 
Harald (28-02-2006)
Kommentar
Fra : Harald


Dato : 28-02-06 20:31

"Wiljan" <wiljan@post8.fjern.tele.dk> skrev i en meddelelse
news:440498aa$0$153$edfadb0f@dread11.news.tele.dk...
> Hej gruppe
>
> Jeg er ved at lave en multimedia aplikation i D7 med videoafvikling og RSS
> newsreader.
>
> Her har jeg en form med et panel hvor jeg starter et videoklip med tryk på
> en knap.
>
> procedure TForm1.Button2Click(Sender: TObject);
> begin
> mediaplayer1.FileName:=('c:\test.mpg');
> mediaplayer1.Display:=panel1;
> mediaplayer1.Open;
> mediaplayer1.Play;
> end;
>
> desuden har jeg en Label på formen der laver ec crawl text ved hjælp af en
> timer på 40ms
>
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> Label1.Caption:='Test';
> end;
>
>
> procedure TForm1.Timer1Timer(Sender: TObject);
> begin
> i:=i+2;
> label1.Left:=form1.Width-i;
> if i>=form1.Width then i:=1;
> end;
>
> Labelen crawler fint hen over skærmen .... men ikke når man starter
> videoklippet, her går crawl i stå mens der loades data fra harddisken mm.
>
> Man kunne så tro at det bare er en sløv PC men hvis jeg åbner mit program
> 2 gange så kører crawlteksten fint i det andet program, mens der loades
> data i det første program.
>
> Det får mig til at forstå at mit program kun kører som 1 thread og derfor
> venter programmet på at load af data bliver færdig.
>
> Jeg kunne nu meget godt tænke mig at loade data i en seperat thread og
> måske også have crawl i sin egen thread da programmet også skal lave andre
> ting , jeg håber her er en der kan forklare på simpelt vis hvordan man går
> det??

For at kunne arbejde med threads er man nød til at have forståelsen for
hvordan tingene hænger sammen når man bruger threads, så jeg vil anbefale at
du læser dette:
http://www.pergolesi.demon.co.uk/prog/threads/ToC.html

/HK



Brian Andersen \(www~ (28-02-2006)
Kommentar
Fra : Brian Andersen \(www~


Dato : 28-02-06 21:17

Se tråden: Brug TWindowsMediaPlayer i tråd af 27.01.2006.

/Brian



gusse.net (01-03-2006)
Kommentar
Fra : gusse.net


Dato : 01-03-06 15:19

på at kigge på tthread i hjælpen

--
gusse
www.gusse.net
www.slanke-siden.dk



"Wiljan" <wiljan@post8.fjern.tele.dk> wrote in message
news:440498aa$0$153$edfadb0f@dread11.news.tele.dk...
> Hej gruppe
>
> Jeg er ved at lave en multimedia aplikation i D7 med videoafvikling og RSS
> newsreader.
>
> Her har jeg en form med et panel hvor jeg starter et videoklip med tryk på
> en knap.
>
> procedure TForm1.Button2Click(Sender: TObject);
> begin
> mediaplayer1.FileName:=('c:\test.mpg');
> mediaplayer1.Display:=panel1;
> mediaplayer1.Open;
> mediaplayer1.Play;
> end;
>
> desuden har jeg en Label på formen der laver ec crawl text ved hjælp af en
> timer på 40ms
>
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> Label1.Caption:='Test';
> end;
>
>
> procedure TForm1.Timer1Timer(Sender: TObject);
> begin
> i:=i+2;
> label1.Left:=form1.Width-i;
> if i>=form1.Width then i:=1;
> end;
>
> Labelen crawler fint hen over skærmen .... men ikke når man starter
> videoklippet, her går crawl i stå mens der loades data fra harddisken mm.
>
> Man kunne så tro at det bare er en sløv PC men hvis jeg åbner mit program
> 2 gange så kører crawlteksten fint i det andet program, mens der loades
> data i det første program.
>
> Det får mig til at forstå at mit program kun kører som 1 thread og derfor
> venter programmet på at load af data bliver færdig.
>
> Jeg kunne nu meget godt tænke mig at loade data i en seperat thread og
> måske også have crawl i sin egen thread da programmet også skal lave andre
> ting , jeg håber her er en der kan forklare på simpelt vis hvordan man går
> det??
>
> Hilsen Wiljan
>
>
>
>
>
>



Wiljan (01-03-2006)
Kommentar
Fra : Wiljan


Dato : 01-03-06 21:12

Hej

Tak for feed-back

Nu har jeg læst en del om Threads og forstår udemærket ideen.
Jeg har også lavet eksemplet med primtal der beregnes i threads og det
virker fint.

Så har jeg prøvet at lade en thread starte mediaplayren og lade den thread
loope indtil videofilen er kørt til ende.

Dette gjorde men jeg havde en timer i min main form til at flytte min crawl
hvert 40 ms og nu kører crawlen fint mens videoklippet starter.

Men mår jeg starter mediaplayren fra threaden så har jeg ikke kontrol over
den fra min hoved form mere
dvs. jeg kan foreksempel ikke stoppe klippet.eller få tilbagemelding hvor
langt klippet har kørt.
Jeg har brug for at loade og starte et nyt klip når det første er færdigt.

Her kunne jeg godt tænke mig et eksempel.

Jeg har også tænk om jeg burde flytte min timer på de 40 ms ud i en thread
og så lade den opdatere min crawl på min mainform, men her er jeg i tvivl om
det giver nogen forbedring?
(egent ligt kunnne jeg godt tænke mig at crawle hurtigere men det virker
ikke som om at man kan få en timer til at køre meget hurtigere.

Håber I forstår hvad jeg gerne vil lave og kan komme med et par forslag.

Hilsen Wiljan



Khvm (02-03-2006)
Kommentar
Fra : Khvm


Dato : 02-03-06 15:05

Wiljan wrote:
> procedure TForm1.Timer1Timer(Sender: TObject);
> begin
> i:=i+2;
> label1.Left:=form1.Width-i;
> if i>=form1.Width then i:=1;
> end;
>

Må jeg foreslå en mindre forbedring?

procedure TForm1.Timer1Timer(Sender: TObject);
begin
i:=i+2;
label1.Left:=form1.Width-i-label1.width;;
if i>=form1.Width then i:=1-label1.width;;
end;


Mvh Ken Madsen

http://www.mcscout.dk

Wiljan (04-03-2006)
Kommentar
Fra : Wiljan


Dato : 04-03-06 15:04

Hej

Jeg er gået lift i stå så jeg har vendt problemstilligen om-

Jeg har lavet et thread hvor min timer til crawltexten kører i den flytter
så labelen i min main form her er det tydeligt at se at timeren kører vider
men fmainformen loader mpeg.

Det jeg har tænkt er om man ikke kan oprette en en form i runtime fra min
timer thread som så har den prioritet som threaden kører med?

Kan I skrive et par linier hvordan jeg op retter en form i runtime fra en
thread ?

Her er et link på hvad jeg er ved at lave

http://www.tech2net.dk/media/img_4300.jpg


Hilsen Wiljan



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste