Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: luis456 en 26 Diciembre 2012, 07:50 am



Título: Necesito una rutina simple de caducidad de programa
Publicado por: luis456 en 26 Diciembre 2012, 07:50 am
Hola de nuevo

Tengo un código y necesito que se caduque a cada cierto tiempo sea por fecha o por uso algo simple ya que es para regalarlo y que lo crakeen no es problema,pero por fastidiar jejej.

pensé en esto ( pero es fox :) )

if date == 12/12/2012
exit
endif

claro esto es en fox pro y no se como hacerlo en c++ ya que en  fox no hay que declarar el time

gracias

Luis




Título: Re: Necesito una rutina simple de caducidad de programa
Publicado por: ecfisa en 29 Diciembre 2012, 00:37 am
Hola.

Código
  1. #include <iostream>
  2. #include <ctime>
  3. using namespace std;
  4.  
  5. int expired(struct tm);  
  6. ...
  7.  
  8. int main() {
  9.  struct tm f;
  10.  int d,m,y;
  11.  
  12.  /*
  13.   Aqui deberia ir el codigo para obtener la fecha de caducidad.  
  14.   El dia, mes y año se almacenan en las variables: d, m, y.
  15.   */
  16.  
  17.  f.tm_year = y;
  18.  f.tm_mon  = m;
  19.  f.tm_mday = d;
  20.  if (expired(f) > 0) {
  21.    cout << "El periodo de uso ha caducado";
  22.    return 1;
  23.  }
  24.  // ...
  25.  return 0;
  26. }
  27.  
  28. /* expired: devuelve > 0 si ini < hoy, = 0 si ini = hoy, < 0 si ini > hoy */
  29. int expired(struct tm ini) {
  30.  time_t t = time(NULL);
  31.  struct tm *hoy = localtime(&t);
  32.  return (hoy->tm_year+1900 + hoy->tm_mon + hoy->tm_mday) -
  33.         (ini.tm_year + ini.tm_mon+ ini.tm_mday);
  34. }
  35.  

Saludos.


Título: Re: Necesito una rutina simple de caducidad de programa
Publicado por: rir3760 en 29 Diciembre 2012, 02:01 am
Otra opción es, en la caso de C, utilizar la función difftime para obtener la diferencia entre dos fechas. Mas o menos así:
Código
  1. #include <time.h>
  2.  
  3. /* ... */
  4.  
  5. /* Retorna 1 si no se ha sobrepasado la fecha, 0 en caso contrario */
  6. int expired(struct tm *ini)
  7. {
  8.   return difftime(time(NULL), mktime(ini)) >= 0.0;
  9. }

Un saludo


Título: Re: Necesito una rutina simple de caducidad de programa
Publicado por: luis456 en 29 Diciembre 2012, 06:53 am
No me sale jejej y gracias por responder  funciona bien compila y todo pero si pongo una fceha pasada deberia de sacarme el mesagebox y solo se se cierra

luis

Código:
#include <iostream>
#include <ctime>
using namespace std;
 
int expired(struct tm); 
 
int main() {
  struct tm f;
  int d,m,y;
 
  // esta seria la fecha de caducidad ????????????
  d= 01;
  m= 12;
  y= 2013;
 
  // segun entiendo tendria que poner las Variables con la fecha que elija ----------No me sale
  //  +Aqui deberia ir el codigo para obtener la fecha de caducidad. 
 // El dia, mes y año se almacenan en las variables: d, m, y.
  //*/
 
  f.tm_year = y;
  f.tm_mon  = m;
  f.tm_mday = d;
  if (expired(f) > 0) {
    cout << "El periodo de uso ha caducado";
    return 1;
  }
  // ...
 
    return 0;
}
 
/* expired: devuelve > 0 si ini < hoy, = 0 si ini = hoy, < 0 si ini > hoy */
int expired(struct tm ini) {
  time_t t = time(NULL);
  struct tm *hoy = localtime(&t);
  return (hoy->tm_year+1900 + hoy->tm_mon + hoy->tm_mday) -
         (ini.tm_year + ini.tm_mon+ ini.tm_mday);
         
}