Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como controlar tiempo (https://www.clubdelphi.com/foros/showthread.php?t=86166)

carlosprotos 26-06-2014 06:35:02

como controlar tiempo
 
Como seria la función para controlar tiempo , por ejemplo , quiero que mi form funcione hasta el 31/06/2014 y que a partir de esa fecha para adelante no se abra nunca mas (form1.close) , como seria la función ??. :):):)

newtron 26-06-2014 09:14:33

Cita:

Empezado por carlosprotos (Mensaje 478323)
Como seria la función para controlar tiempo , por ejemplo , quiero que mi form funcione hasta el 31/06/2014 y que a partir de esa fecha para adelante no se abra nunca mas (form1.close) , como seria la función ??. :):):)

Hola.

¿Y con qué fecha piensas comparar ese día 31/06/2014? porque si es para una demo es una protección bastante pobre, si al sistema le cambian la fecha el programa seguiría funcionando.

Neftali [Germán.Estévez] 26-06-2014 09:59:08

La primera opción es utilizar la función Now() que te da la fecha y hora actual. Basta comparar eso con la fecha que quieres poner como "tope".
Eso funcionará, pero tal y como dice newtron, lo primero que va a hacer el usuario es probar a cambiar la fecha.

Habría que "estrujarse" un poco más las neuronas para mejorar un poco más...

Lo primero que se me ocurre, por ejemplo, es obtener la fecha de otro sitio:

* Servidor SGBD: SQLServer, Firebird, MySQL,...
Dependiendo de los programas que lo utilicen, no es fácil poder cambiar la Fecha del SQBD.

* Internet

* Algun fichero de sistema (pagefile.sys)


Otra cosa es guardar en el registro alguna clave con la fecha de la última ejecución. Cada vez que ejecutas si la fecha es Mayor que la almacenada, la sobreescribes, si es menor o igual no. De esta forma si "tiran" el reloj para atrás la fecha seguirá siendo la mayor. Ese valor habría que "ofuscarlo" un poquito.

Puedes seguir complicándolo mucho, todo depende del tiempo que quieras invertir...

newtron 26-06-2014 16:33:51

Cita:

Empezado por Neftali (Mensaje 478327)
Otra cosa es guardar en el registro alguna clave con la fecha de la última ejecución. Cada vez que ejecutas si la fecha es Mayor que la almacenada, la sobreescribes, si es menor o igual no. De esta forma si "tiran" el reloj para atrás la fecha seguirá siendo la mayor. Ese valor habría que "ofuscarlo" un poquito.

^\||/ esta me mola. De todas formas todavía no hemos contestado la pregunta del colega carlosprotos. :D

duilioisola 26-06-2014 18:27:18

Cita:

De todas formas todavía no hemos contestado la pregunta del colega carlosprotos.
Código Delphi [-]
var
  Fecha_Demo : TDateTime;
[...]
  // Establezco una fecha final (31/06/2014 23:59:59.999)
  Fecha_Demo := EncodeDateTime(2014, 06 31, 23, 59, 59, 999);
  // Si se hoy es posterior a esta fecha cierro
  if (Now > Fecha_Demo) then
     Close;

newtron 27-06-2014 09:41:22

Hola de nuevo.

Yo en alguna ocasión, y para no complicarme mucho la vida, lo que hago es hacer la comparación con la última fecha de alguna tabla de la base de datos que contenga movimientos como pueden ser apuntes contables, albaranes, etc. de esta manera no tienes que preocuparte de guardar nada ni en registro ni buscar fechas por ningún sitio, la comparas con los datos que tienes en el programa y si se han colado de fecha lo cierras y a volar. El código puede ser el mismo que te apunta el amigo duilioisola pero comparando con la fecha que te comento.

Saludos


La franja horaria es GMT +2. Ahora son las 09:53:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi