Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
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-06-2004
Avatar de miguel_fr
miguel_fr miguel_fr is offline
Miembro
 
Registrado: mar 2004
Ubicación: Santiago del estero, Capital
Posts: 73
Poder: 21
miguel_fr Va por buen camino
Manejo de un Ttimer

Buenas, soy yo nuevamente con una consulta simple pero que me esta matando.
tengo un Ttimer en mi form y no se bien como utilizarlo, yo necesito generar un contador que comienze en 0 y se vaya incrementando, el contador es de tiempo, o sea que tiene hora, minutos y segundos.
lo unico que logro hasta el momento es inicializar mi contador a cero
Código Delphi [-]
var
  DateTime : TDateTime;
datetime:=0;{no importa si pongo 1000 siempre esta en cero}
edit.text:= timetostr(datetime);
{cuando yo quiero incrementar esto utilizo la funcion}
IncSecond(datetime,60);
{pero no me funciona}
el incremento lo debo hacer en el evento ontimer, si no me equivoco. me surge otra duda, si necesito mas de un contador de este tipo, voy a necesitar tantos Ttimer como contadores quiera incorporar?
Responder Con Cita
  #2  
Antiguo 20-06-2004
hogol hogol is offline
Miembro
 
Registrado: jul 2003
Posts: 62
Poder: 21
hogol Va por buen camino
Hola buenas

Yo lo haría del siguiente modo:

1) Define una variable global como tdatetime. Por ejemplo
Código Delphi [-]
 var hora_inicio : Tdatetime;

2) En el evento oncreate del formulario añades esto:
Código Delphi [-]
hora_inicio := now;

3) Finalmente en el evento ontimer pon solo esta linea :
Código Delphi [-]
 edit1.text := timetostr(now-hora_inicio);

El problema de tu código es que defines la variable en el evento del timer, con lo cual el valor actual se pierde cada vez que sale del evento. Además, cada vez que se ejecuta el timer tu mismo pones el contador a cero, cuando solo deberias hacerlo una vez al comenzar el programa.
Finalmente, lo de sumar 'manualmente' el valor del contador tampoco es muy buena idea porque la precisión del timer no es muy buena y a la larga tu reloj terminaria adelantandose o atrasandose.

Saludos
Hogol
Responder Con Cita
  #3  
Antiguo 20-06-2004
Avatar de miguel_fr
miguel_fr miguel_fr is offline
Miembro
 
Registrado: mar 2004
Ubicación: Santiago del estero, Capital
Posts: 73
Poder: 21
miguel_fr Va por buen camino
muchas gracias por tu ayuda, ya me pongo a investigar esto y luego te aviso. no tenia idea de "now"
siguiendo en el tema, el timer como ve una resta de este tipo
datetime = 23:00
now = 01:00

tengo que realizar algun tratamiento en estos casos o delphi realiza la convercion adecuada para no tener problemas?

Última edición por miguel_fr fecha: 20-06-2004 a las 03:04:56. Razón: para agregar consulta
Responder Con Cita
  #4  
Antiguo 21-06-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
El tipo de dato TDateTime es formato de fecha y hora, representado mediante un número real, donde la parte entera es el número de dias y la parte fraccionaria es la hora, minutos, segundos y milisegundos.

Por tanto puedes hacer perfectamente sumas y restas con otras fechas y mezclandolos con números, que siempre vas a tener una fecha válida.

Código Delphi [-]
  hora_inicio := hora_inicio  + 1 // sumamos 1 dia
  hora_inicio := hora_inico + 1/24 // sumamos 1 hora a la fecha.

Mas natural sería usar las funciones que existen en delphi (al menos en la version 6) para incrementar parcialmente, pero bueno, es la idea lo que importa.

Por tanto, cuando sean las 23:00 y le sumas 2 horas, cambiará la hora y la fecha, dandote la 1 de la madrugada y modificando la fecha del datetime.

Si lo que necesitas es saber el tiempo que ha pasado entre 2 fechas, usa las funciones DaysBetween, HoursBetween etc... etc...

Saludos
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


La franja horaria es GMT +2. Ahora son las 01: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