• Miércoles 6 de Noviembre de 2024, 02:41

Autor Tema:  Segundos (#3).  (Leído 1988 veces)

_.B._

  • Miembro activo
  • **
  • Mensajes: 88
    • Ver Perfil
Segundos (#3).
« en: Miércoles 4 de Febrero de 2004, 20:00 »
0
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
  1.     PROCEDURE Segundos (Seg:BYTE);
  2.               { Funciona para detener un programa por 'Seg' segundos.
  3.                 Valores de 'Seg' mayores a 60 segundos pueden ocasionar
  4.                 calculos de tiempo erroneos.                            }
  5.       VAR H1,H2,M1,M2,S1,S2,Cent1,Cent2:WORD;
  6.           S0:0..60;
  7.           S90:0..1;
  8.           S0B,Cent90B:BOOLEAN;
  9.       BEGIN
  10.         S0:=0;
  11.         S90:=0;
  12.         S0B:=FALSE;
  13.         Cent90B:=FALSE;
  14.         GETTIME (H1,M1,S1,Cent1);
  15.         INC (M1);
  16.         INC (S1);
  17.         INC (Cent1);
  18.         IF Cent1 > 90 THEN
  19.           BEGIN
  20.             Cent90B:=TRUE;
  21.             Cent1:=Cent1-90;
  22.             S90:=1
  23.           END;
  24.         IF S1 = 1 THEN
  25.           S0B:=TRUE;
  26.         REPEAT
  27.           GETTIME (H2,M2,S2,Cent2);
  28.           INC (M2);
  29.           INC (S2);
  30.           INC (Cent2);
  31.           IF (Cent2 > 90) AND (M1 = M2) AND Cent90B THEN
  32.             Cent2:=Cent2-90;
  33.           IF (S2 = 1) AND NOT S0B THEN
  34.             S0:=60;
  35.           S2:=S2+S0;
  36.         UNTIL (S2-S1 >= Seg+S90) AND (Cent2 >= Cent1)
  37.       END;
  38.  

NOTA: el programa o unidad que contengan a este Procedure, debe tener utilizar DOS (USES Crt,Dos;).

Bernardo L. :comp:
¡Olmo, dame peras!
www.BernardoLG.net

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Segundos (#3).
« Respuesta #1 en: Jueves 5 de Febrero de 2004, 15:40 »
0
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

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Segundos (#3).
« Respuesta #2 en: Jueves 5 de Febrero de 2004, 15:55 »
0
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._

  • Miembro activo
  • **
  • Mensajes: 88
    • Ver Perfil
Re: Segundos (#3).
« Respuesta #3 en: Jueves 5 de Febrero de 2004, 17:27 »
0
Great! :bravo:
A programar!.

Bernardo L. :comp:
¡Olmo, dame peras!
www.BernardoLG.net

TempWin

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
    • http://jab.blogia.com
Re: Segundos (#3).
« Respuesta #4 en: Jueves 5 de Febrero de 2004, 22:43 »
0
Funciona perfectamente. Buen trabajo _.B._  :)
http]