Newsgroup: it.comp.lang.pascal
Titolo: gestione tempo

Ciao a tutti,
     ho un problema con la gestione del tempo. Devo creare un'applicazione
che esegua un coutdown di 60 secondi. Ho intensione di inserirlo in un
repeat until e non mi deve rallentare il ciclo con attese.
Grazie per il vostro aiuto

e non mi deve rallentare il ciclo con attese.
!?!?!?!!?!?
scusa ma una cosa del genere non va bene?
I := 60
Repeat
  GotoXY(1,1); Write(I);
  Dec(I);
  Delay(1000);
Until I = 0
Perche dici che non ci devono essere attese?
che devi fare dentro il Repeat-Until?
Il Razziatore,
The Only Good Windows is an uninstalled Windows
-----------------------------------------------
E-MAILs : IlRazziat...@NOSPAMnetscape.net
WEB     : 
http://www.razziatore.dns2go.com/
ICQ     : 67552596

 wrote in message
s7hgluoqr16bh8273...@4ax.com...


 ha scritto nel messaggio
news:auP59.58284$n04.1...@twister2.libero.it...



Ovvio, che vedi a scatti... devi eliminare l'effetto additivo.
Indipendentemente dal tempo, tutte le immagini che vedi sullo schermo sono
discrete e non continue, vale a dire che sono tutte a scatti quando cambi le
cordinate.... in un certo modo...
L'effetto di continuità quindi non esiste nella realtà ma puoi sfruttsare il
fatto che l'occhio umano non percepisce questi scatti al di sotto di un
certo intervallo di tempo per cui le interpreta come continue....
Per vedere quindi il tuo oggetto muoversi in modo uniforme e "continuo" devi
almeno farlo ridisegnare 25 volte nell'intervallo di un secondo....  quindi
in sostanza
aggiungere a quel codice di prima una procedura che
per ogni secondo che passa... ti calcoli i 25 intervalli e ridisegni
l'oggetto nelle 25 coordinate diverse a intervallo di tempo nullo o comunque
pari a 1/25 di secondo....
Cooper.

Ho preso in analisi la tua seconda nozione e questo č quello che ne uscito
fuori...
{------------------------------------}
uses dos,crt;
var h,h2,m,m2,s,s2,c,c2:word;
    conta:integer;
begin
  clrscr;
  gettime(h,m,s,c);
  conta:=60;
  repeat
     gettime(h2,m2,s2,c2);
     if s2>s+1 then
     begin
        gotoxy(1,1);
        dec(conta);
        write(conta);
        gettime(h,m,s,c);
     end;
  until (conta=0) or keypressed;
end.
{------------------------------------}
L'ho provato una decina di volte...e "gira" (usiamo questo termine) per
10-20 al max 30 secondi e poi va in panne...quindi il contatore non arriva
mai a 0...e sinceramente non riesco a capirne il motivo.
ReDiCuori <redicu...@NOSPAMinwind.it> wrote in message
DTf69.207377$Jj7.4...@news1.tin.it...


Scusa ma non avevo preso in considerazione il fatto che il valore della
variabile s prima o poi dovrà assumere 0 e logicamente s2 conterrà
59...quindi s2 non è più maggiore di s bensì minore. Come faccio a
svincolarmi da questo?

 ha scritto nel messaggio
news:4iQ69.68082$lu5.1...@twister1.libero.it...

Infatti nel mio precedente post ho considerato anche i minuti non solo i
secondi
dicento che esci quando minuti2>=minuti1 and secondi2>=secondi1
che penso dovrebbe farti contare almeno 60 secondi
Vediamo se entri con gettime che restituisce min=2 sec=30
devi uscire quando gettime ti ritorna min2=3 sec2=30
quindi conterai i primi 30 secondi e ottieni
min2=3 sec2=00 ora devi contare altri 30 secondi
la prima condizione è vera perchè min2 è superionere di min1 quando gettime
ritorna min2>=30 devi uscire dal ciclo.
Ciao ReDiCuori
--
L'informatica è un arte


Prova cosě (non so se funziona devo ancora provarlo)
uses dos,crt;
var m1,m2,s1,s2,c,conta:word;
function diff(m1,s1,m2,s2:integer):integer;
var tmp:word;
begin
   tmp:=0;
   tmp:=tmp+(m2-m1)*60;
   tmp:=tmp-s1+s2;
   diff:=tmp;
end;
begin
  clrscr;
  gettime(c,m1,s1,c);
  repeat
     gettime(c,m2,s2,c);
     conta:=60-diff(m1,s1,m2,s2);
     gotoxy(1,1);
     write(conta);
     (* disegni *)
  until (conta=0) or keypressed;
end.
P.S. Ci vediamo sabato al biliardo;

Ciao ReDiCuori
Di norma quando si usa la getTime si converte tutto nel unita +
piccola (io facevo la conversione in centesimi ma si puo'
tranquilamente arotondare (€ non centra nulla) ai seocndi)
e + comodo (e + sicuro) usare una sola variabile
T2 > T1


 wrote in message
auP59.58284$n04.1...@twister2.libero.it...
