Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kde se koná výstava fotografií Luďka Vojtěchovského?

V dnešní soutěži hrajeme o:



DxTimer přestane chodit do OnTimer ...

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: DxTimer přestane chodit do OnTimer ...

Autor: JaroB

21:29:05 15.07.2010

no to je problém, dxtimer se nesmí zastavit, scéna musí být stále vykreslována. pouze objekty čekající na vykreslení se "jakoby zařazují do fronty". dokonce jsem to viděl v jakési hře kde všechno bylo v hlavní smyčce dxtimeru (a byla pak ukrutně dlouhá) nebo v jiném pokusu, kdy pro každý screen byla založena vlastní událost ontimer (což je docela i rozumné).

Pošli mi nějaký jednoduchý demo zdroják, já se na to podívám.

Citovat příspěvek

 

Re: DxTimer přestane chodit do OnTimer ...

Autor: breakenter

17:28:20 13.07.2010

Zkusím problém popsat ještě jednodušeji.



1/ Nastavím DxTimer na 100ms a spustím
2/ DxTimer mě v OnTimer proceduře střídavě v LABELU přepísuje znaky / \
3/ Hurá DxTimer mě každých 100ms v Labelu změní znak / na znak \
4/ Jinak řečeno v labelu se mě "vrtí" lomítko

5/ Tento proces obstarává na pozadí událost OnTimer od Dxtimeru
a dokud DxTimer jede tak se znak znak "vrtí"

6/ nyní si kliknu na řekněme buton1
7/ v jeho proceduře je čekací smyčka na .. něco .. jedno co, jedno jaká
8/
repeat
application.processmesage;
until hotovo=true ;

9/ jakmile program spadne do čekací smyčky - DxTimer přestane fungovat
ZNAK SE PŘESTANE VRTĚT.

10/ Jiné timery toto nedělají - základní systémový Timer, případně timer
z unity uvedené někde v druhém- třetím příspěvku

11/ Mám WindowsXp a Delphi7 , UnDelphix 1,08.

12/ JDE MĚ O TO že DXTimer přestane chodit do události OnTimer
když někde jinde na něco čekám nebo něco dělám.

Citovat příspěvek

 

Re: DxTimer přestane chodit do OnTimer ...

Autor: breakenter

17:15:06 13.07.2010

Diky za info

Tento systém samozřejmě mám.
Problém je zde - zjednodušená verze .. - vypíšu do komentu.



procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
// malování - po dokončení malování se DX sám zastaví - enabled:=false ;
end;


Klik tlačítka

procedure TForm1.Button1Click(Sender: TObject);
var i:integer ;
begin
For i:=1 to 100 do
begin
PripravTexty(i) ; // << zde předám Dxtimeru data k zpracování
DxTimer1.Enabled:=True ; // pustíme DX

repeat // ZDE nastává problém
Application.ProcessMessages ; // čekáme až se DXTimer zastaví (dokreslí)
until not DxTimer1.Enabled ; // aby se mohlo ve smyčce vykreslovat dále
end; // DX ale přestabe dávát event OnTimer - nechodí
end; // - JINÉ ČASOVAČE to nedělají !!

Citovat příspěvek

 

Re: DxTimer přestane chodit do OnTimer ...

Autor: JaroB

15:48:16 13.07.2010

Problém je v tom, že chceš "něco" řídít ve smyčce DXTimeru, ale ve skutečnosti potřebuješ ošetřit událost- tak ponech v DXTimeru vykreslování (veškerý kód k vykreslení), ale dodávej pro vykreslení pouze řídící informace např. z tlačítka (zapnout, vypnout, změnit obrázek atp.)

Citovat příspěvek

 

Re: DxTimer přestane chodit do OnTimer ...

Autor: breakenter

11:23:57 13.07.2010

Tak uvedou unitou jsem problém vyřešil ale pro změnu jsem opět v pr.....
neb tento časovač nechodí přesně. Není vhodný pro animaci textu a pod
neb diky neplynulosti časovače text značně cuká a trhá očima.
Origo DxTimer to měl vyřešené lépe (odchylka + - 1ms) ale zase pokus
se v programu vyskytne čekací smyčka DxTimer přestane dávat eventy OnTimer ..

Help me pleas :)

Citovat příspěvek

 

Re: DxTimer přestane chodit do OnTimer ...

Autor: breakenter

9:32:49 13.07.2010

Prozatím jsem vyhodil DxTimer
Origo DXTimer z undelphix_1_08 nechodí - viz popis problému.
(Windows XP , Delphi7 )


a použil jsem tuto unitu
http://koders.com/delphi/fid0C69814DE73551E3B24F08EBDD2B7CB103037AD0.aspx?s=delphi#L22

Tento Timer "padá" do přerušení OnTimer i v případě, že v hlavní smyčce programu je
čekací smyčka typu REPEAT-UNTIL , While a pod ...

Nic méně by mne zajímalo proč DxTimer z UndelphiX nechodí jak má :)

Citovat příspěvek

 

Re: DxTimer přestane chodit do OnTimer ...

Autor: breakenter

18:35:01 12.07.2010

Ještě jsem zapoměl uvést že řádek kodu

// If ImDone=true Then DxTimer1.Enabled:=False ;

mám vyremovaný - nezastavuji DxTimer.

Citovat příspěvek

 

DxTimer přestane chodit do OnTimer ...

Autor: breakenter

18:24:18 12.07.2010

Zdaravím mám problém s DxTimerem.

Mám proceduru která ve smyčce přehrává text na DXDRAW
k tomu slouží DxTimer který to celé časuje.

Ve zkrácené formě .....

Po Kliku na Buton1 potřebuji ve smyčce vymalovat za
sebou 100 animací. Takže předám data k vymalování
a sputím DXTimer který v nastavený interval chodí
do události DXTimer1Timer.

V momentě kdy program spadne do smyčky kde se čeká
na ukončení celého vymalování aby smyčka mohla
pokračovat dalším textem - DXTIMER přestane časovat !!!

( jinak řečeno když spustim DxTimer tak začne časovat
jakmile se ale kdekoli v programu při spuštěném DxTimeru
použije čekací smyčka typu WHILE nebo Repeat-Until DxTimer
přestane časovat - chodit do odálosti OnTimer )

Nevíte prosím někdo jak tento problém vyřešit ?
Děkuji


procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
/// malování

// po vymalování
ImDone:=True ;
end;



procedure TForm1.Button1Click(Sender: TObject);
var i:integer ;
begin

For i:=1 to 100 do
begin
PripravTexty(i) ; //připravíme text k vymalování
DxTimer1.Enabled:=True ; // pustíme DX

{ čekej až DX domaluje }
ImDone:=false ;
While DxTimer1.Enabled do // <<<- Zde ve smyčce přestane
begin // chodit DXtimer do události DxTimer1Timer
If ImDone=true Then DxTimer1.Enabled:=False ;
Application.ProcessMessages ;
end;
// pokud domaloval pokračuj v dalším textu
end;{for-do}

end;

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: