Newsgroup: it.comp.lang.pascal
Titolo: Keypressed e Delay ?

E' possibile inserire una pausa con "repeat until keypressed" e "delay
(XXX)", ovvero che faccia una certa cosa dopo XX secondi oppure fino a
quando non si prema un tasto ?
Overro se imposto 10 sec la pausa durerà dieci secondi ma a 6 secondi premo
un tasto la pausa termina.
Boh... non ho capito nemmeno io quello che ho scrito ... spero che voi mi
capiate .... ;-)
__________________________________________________________
E-Mail:
(
rena...@lycosmail.com
)
__________________________________________________________
I.C.Q.: 17079401
_________________________________________________________
Visita il mio sito in perenne costruzione
http://hophop.com/renato
_________________________________________________________
René
:-)

Potresti fare una cosa di questo genere:
limite:=10000;
cont:=0;
repeat
    delay(1);
    inc(cont);
until keypressed or (cont=limite);
-----------------------------------------------------
s...@gem.it
kin...@geocities.com
IRCNet:KiNg[G]hZ »»» #
mp3.it
                                »»» #gameprog-ita

until keypressed or (cont=limite);
Non e' un codice affidabile, in quanto varia la durata dell'esecuzione
da processore a processore.
Va meglio, invece, costruire una funzione time() che ritorni il tempo
in secondi all'istante x :
start_time := time ;
x_time := start_time ;
while (not keypressed) or
      (x-start_time <= 10) do x_time := time ;

 Overro se imposto 10 sec la pausa durerą dieci secondi ma a 6 secondi premo



Cosi' dovrebbe andare.
uses	dos,crt;
function  tempo:longint;
var	h,m,s,c:word;
begin
	GetTime(h,m,s,c);
	tempo:=trunc(s)+(trunc(m)*60)+(trunc(h)*60*60)
end;
var	t1,t2:longint;
	c:char;
begin
	t1:=tempo;
	repeat
		t2:=tempo
	until (keypressed) or (abs(t2-t1)>10);
	while keypressed do
		c:=readkey
end.
bye
--
fabi...@rocketmail.com

	tempo:=trunc(s)+(trunc(m)*60)+(trunc(h)*60*60)
perche' trunc() ???



Perche'  somme di WORD da un WORD.
Con la funzione TRUNC trasformo un WORD in un LONGINT.
Fabio
--
fabi...@rocketmail.com

Con la funzione TRUNC trasformo un WORD in un LONGINT.
Ma non devi usare trunc() !!!
Si fa il casting in questi casi !
tempo := longint(s)+longint(m)*60+longint(h)*3600 ;
Perche' sprecare tempo prezioso nel chiamare una funzione esterna ?

X := 1;
While (not keypressed ) and ( X <> TempoMassimo)
   Do If not Keypressed
           Then Begin
                Delay ( 1 );
                Inc ( X );
            End;
Tempo ùMassimo va espresso in millisecondi ( msec ).
Bye;

X := 1;
While (not keypressed ) and ( X <> TempoMassimo)
   Do If not Keypressed
           Then Begin
                Delay ( 1 );
                Inc ( X );
            End;
TempoMassimo va espresso in millisecondi ( msec ).
Bye;

X := 1;


Bye;

X := 1;

TempoMassimo va espresso in millisecondi ( msec ).
Bye;

Chiedo scusa per i ripetuti messaggi,
ma non vedendo il messaggio caricvado a distanza di diverse ore credevo
fosse un problema del mio programma e lo ripostato coem aveve visto piů
volte.
Scusate Dav.

      (x-start_time <= 10)
:)))
--


 :-)
Volendo puoi utilizzare l'interrupt del clock, in questo modo sai sempre il
tempo corretto, indipendentemente dal processore, diventerebbe :
repeat until( (tempo=[18,2 * i secondi che vuoi]) or ( keypressed ))
Ovviamente manca la procedura relativa all'interrupt.........
Ciao.........