Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2017
MacStreet MacStreet is offline
Miembro
 
Registrado: oct 2017
Posts: 16
Poder: 0
MacStreet Va por buen camino
Red face Problema con datetime

Hola a toda la comunidad de clubdelphi, tengo un problema al usar el datetime, anteriormente usaba este codigo :
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
fin:boolean;
a:TDateTime;
 f : TextFile;
begin

a:=DateToStr('10/09/2017');
// fechaes:'dia/mes/año'
if date >= a then
begin
fin:=true;
Application.Terminate();
end;
end;

funciona perfectamente y todo, el problema viene a ser cuando tu cambias la fecha de tu ordenador la cambias al dia : "10/09/2017"
vuelve a funcionar la aplicacion, asi ya se haya vencido, estube pensando en que ya no usara la fecha por defecto del ordenador si no que usé la fecha del internet (obtener hora desde internet ) pero no sabria como cambiar el valor por defecto que tiene el datetime, estube viendo y me dijieron que use el "IdSNTP1" .
Gracias por adelantado

Última edición por Casimiro Notevi fecha: 20-10-2017 a las 01:58:42.
Responder Con Cita
  #2  
Antiguo 20-10-2017
identsoft identsoft is offline
Miembro
 
Registrado: abr 2006
Posts: 282
Poder: 18
identsoft Va por buen camino
Has probado a cambiar el oredn de la fecha:
a:=DateToStr('2017/09/10') ?
Responder Con Cita
  #3  
Antiguo 20-10-2017
identsoft identsoft is offline
Miembro
 
Registrado: abr 2006
Posts: 282
Poder: 18
identsoft Va por buen camino
perdón.
a:=strtodate('2017/09/10')
Responder Con Cita
  #4  
Antiguo 20-10-2017
Guti13 Guti13 is offline
Miembro
 
Registrado: jun 2006
Posts: 35
Poder: 0
Guti13 Va por buen camino
Comparación de fechas

Yo personalmente te recomendaría usar CompareDate combinado con EncodeDate, algo así

Código:
If CompareStr(Today, EncodeDate(2017,9,10)=LessThanValue Then
Begin
    ......
End
Responder Con Cita
  #5  
Antiguo 20-10-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por MacStreet Ver Mensaje
...
funciona perfectamente y todo, el problema viene a ser cuando tu cambias la fecha de tu ordenador la cambias al dia : "10/09/2017"
vuelve a funcionar la aplicacion, asi ya se haya vencido, estube pensando en que ya no usara la fecha por defecto del ordenador si no que usé la fecha del internet (obtener hora desde internet ) pero no sabria como cambiar el valor por defecto que tiene el datetime, estube viendo y me dijieron que use el "IdSNTP1" .
...
Código Delphi [-]
...
implementation

uses IdSNTP;

function iNetDateTime(const aHost: string) : TDateTime;
var
  idSNTP: TIdSNTP;
begin
  idSNTP:= TIdSNTP.Create(nil);
  try
    idSNTP.Host := aHost;
    Result := idSNTP.DateTime;
  finally
    idSNTP.Free;
  end;
end;
...

Ejemplo de uso:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  dt: TDateTime;
begin
  try
    dt := iNetDateTime('time.windows.com');
    ShowMessage( DateToStr(dt) );
  except // manejar el problema...
    ShowMessage('Error obteniendo la fecha');
  end;
end;

En el siguiente enlace tenes una lista con servidores horarios: Servidores NTP

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 20-10-2017
MacStreet MacStreet is offline
Miembro
 
Registrado: oct 2017
Posts: 16
Poder: 0
MacStreet Va por buen camino
Talking

Cita:
Empezado por ecfisa Ver Mensaje
Hola.


Código Delphi [-]
...
implementation

uses IdSNTP;

function iNetDateTime(const aHost: string) : TDateTime;
var
  idSNTP: TIdSNTP;
begin
  idSNTP:= TIdSNTP.Create(nil);
  try
    idSNTP.Host := aHost;
    Result := idSNTP.DateTime;
  finally
    idSNTP.Free;
  end;
end;
...

Ejemplo de uso:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  dt: TDateTime;
begin
  try
    dt := iNetDateTime('time.windows.com');
    ShowMessage( DateToStr(dt) );
  except // manejar el problema...
    ShowMessage('Error obteniendo la fecha');
  end;
end;


Saludos
Lo probaré ,muchas gracias por la ayuda!
Responder Con Cita
  #7  
Antiguo 20-10-2017
MacStreet MacStreet is offline
Miembro
 
Registrado: oct 2017
Posts: 16
Poder: 0
MacStreet Va por buen camino
Cita:
Empezado por identsoft Ver Mensaje
perdón.
a:=strtodate('2017/09/10')
Si, pero como dijé :
mi aplicacion funcionara solo hasta el dia : 10/09/2017 luego de esa fecha se cierra automaticamente.
pero si cambio la fecha del ordenador, puedo volver a usar la aplicacion por eso que queria ya no usar ese metodo, si no otro y no sabria como crear otro metodo
Responder Con Cita
  #8  
Antiguo 22-10-2017
MacStreet MacStreet is offline
Miembro
 
Registrado: oct 2017
Posts: 16
Poder: 0
MacStreet Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.


Código Delphi [-]
...
implementation

uses IdSNTP;

function iNetDateTime(const aHost: string) : TDateTime;
var
  idSNTP: TIdSNTP;
begin
  idSNTP:= TIdSNTP.Create(nil);
  try
    idSNTP.Host := aHost;
    Result := idSNTP.DateTime;
  finally
    idSNTP.Free;
  end;
end;
...

Ejemplo de uso:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  dt: TDateTime;
begin
  try
    dt := iNetDateTime('time.windows.com');
    ShowMessage( DateToStr(dt) );
  except // manejar el problema...
    ShowMessage('Error obteniendo la fecha');
  end;
end;

En el siguiente enlace tenes una lista con servidores horarios:

Saludos
No me funciona osea si obtiene la fecha y todo, pero lo que yo quiero hacer es que mi aplicacion al detectar el dia "10/09/2017" se cierre .
espero que me entiendas :/
Responder Con Cita
  #9  
Antiguo 22-10-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por MacStreet Ver Mensaje
espero que me entiendas :/
http://www.clubdelphi.com/foros/guiaestilo.php
Responder Con Cita
  #10  
Antiguo 22-10-2017
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Esa fecha la pones TU o el USUARIO?

Porque si la pones TU, estas auto-infligiendote el problema. Es muy simple: Utiliza formatos no ambiguos, y se EXPLICITO en como serializas y deserializas la informacion.

En el caso de las fechas, se usa el formato ISO. Y cuando lees DEBES ESPECIFICAR EN QUE FORMATO!

Tipo:

Código Delphi [-]
LeerFecha('2001-01-01T01:05:01', FormatoISO)
__________________
El malabarista.
Responder Con Cita
  #11  
Antiguo 23-10-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por MacStreet Ver Mensaje
No me funciona osea si obtiene la fecha y todo, pero lo que yo quiero hacer es que mi aplicacion al detectar el dia "10/09/2017" se cierre .
espero que me entiendas :/
Ah, pero yo había entendido que el problema era que no querías tomar la hora del sistema por que la podian cambiar y no que ignorabas como comparar las dos fechas.

En ese caso:
Código Delphi [-]
uses IdSNTP;

function ExpiredDate(const vto: TDateTime; const aHost: string): Boolean;
var
  idSNTP: TIdSNTP;
  dt: TDateTime;
begin
  idSNTP:= TIdSNTP.Create(nil);
  try
    idSNTP.Host := aHost;
    dt := idSNTP.DateTime;
  finally
    idSNTP.Free;
  end;
  Result := dt >= vto;
end;

Ejemplo de uso:
Código Delphi [-]
...
begin
  if ExpiredDate( StrToDate('10/09/2017'), 'time.windows.com' ) then
    Application.Terminate
  else
    ShowMessage('Todo ok');
  ...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas con DateTime y Null jmlifi Varios 5 21-07-2008 14:43:43
between y datetime !!!!!!!! david_uh MySQL 6 30-06-2007 19:02:26
DateTime con vacios CamiloU OOP 4 12-01-2006 13:37:34
problemas con datetime majosf Conexión con bases de datos 6 31-08-2005 23:07:06
DateTime scooterjgm Conexión con bases de datos 3 15-09-2004 16:58:00


La franja horaria es GMT +2. Ahora son las 12:51:38.


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
Copyright 1996-2007 Club Delphi