Programación General > Pascal
Segundos (#3).
(1/1)
_.B._:
A veces queremos detener el programa, mostrando información, por una cantidad de segundos.
Como el Delay es relativo a cada computador, delay (1000) no garantiza que transcurra 1 segundo (la solución a esto, o por lo menos, lo mas cercano a solucionarlo, lo demostraré mas adelante).
Diseñé el siguiente Procedure:
--- Código: Text --- PROCEDURE Segundos (Seg:BYTE); { Funciona para detener un programa por 'Seg' segundos. Valores de 'Seg' mayores a 60 segundos pueden ocasionar calculos de tiempo erroneos. } VAR H1,H2,M1,M2,S1,S2,Cent1,Cent2:WORD; S0:0..60; S90:0..1; S0B,Cent90B:BOOLEAN; BEGIN S0:=0; S90:=0; S0B:=FALSE; Cent90B:=FALSE; GETTIME (H1,M1,S1,Cent1); INC (M1); INC (S1); INC (Cent1); IF Cent1 > 90 THEN BEGIN Cent90B:=TRUE; Cent1:=Cent1-90; S90:=1 END; IF S1 = 1 THEN S0B:=TRUE; REPEAT GETTIME (H2,M2,S2,Cent2); INC (M2); INC (S2); INC (Cent2); IF (Cent2 > 90) AND (M1 = M2) AND Cent90B THEN Cent2:=Cent2-90; IF (S2 = 1) AND NOT S0B THEN S0:=60; S2:=S2+S0; UNTIL (S2-S1 >= Seg+S90) AND (Cent2 >= Cent1) END;
NOTA: el programa o unidad que contengan a este Procedure, debe tener utilizar DOS (USES Crt,Dos;).
Bernardo L. :comp:
Enko:
Me la copie ya que parece ser muchisimo mas precisa que el Delay() del TP
:comp: La inserte en mis programas y anduvo .
Voy a pasar por un siber a ver si no cambia la duracion ( no tendria que cambiar si son segundos :rolleyes: ?)
Enko:
Ya lo comprobe ! :D
utilizando una pausa de 5 segundos anduvo igual en una maquina con un Athlon 1.700 GH y otra con Pentium 750 MH
_.B._:
Great! :bravo:
A programar!.
Bernardo L. :comp:
TempWin:
Funciona perfectamente. Buen trabajo _.B._ :)
Navegación
Ir a la versión completa