Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2010
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
Variable que suma mas de 24h

Buenos días,

necesito definir una variable que sume el total de las hora trabajadas de un trabajador.

Tengo todo bien excepto un detalle importante. Al sumar las horas las meto en una variable TTime y resulta que si por ejemplo son 25h, solo me dice 1

Llego a la conclusión que ese tipo de variable abarca desde 0 a 24 pero no pasa de ahí (es logico)

¿Que tipo de variable puedo usar para obtener un resultado ilimitado de horas?

Me interesa que si sumo 21h, 20h y 23h el resultado sea 64h, todo esto manteniendo un formato de hora.

Como referencia los campos que sumo son de tipo TTime.

Gracias de Nuevo por vuestra ayuda.
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #2  
Antiguo 16-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.318
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Debes tener claro que una cosa es el formato y otra los datos.

Si quieres sumar horas, puedes usar un Byte o un entero, otra cosa después es cómo muestres el resultado.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 16-06-2010
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
A que te refieres?

Te importa ponerme un ejemplo para hacerme una idea, me pierdo con esto y le estoy dando vueltas sin obtener resultado.

Suponemos que tengo dos campos tipo Time, que llamo horas1 y horas2

Quiero que una variable sume los dos campos de tal manera que:

horas1 = 23:00
horas2 = 21:00

Necesito una variable que de por resultado 44:00

Si esa variable la defino tipo TTime el resultado es 20:00
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #4  
Antiguo 16-06-2010
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
pues usas un Integer, que suma muchisimo, y luego pues divides entre 24 y ya
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
  #5  
Antiguo 16-06-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Delphitest, puedes utilizar el tipo Real, en el resultado de la suma, la parte entera te dara los días y la parte decimal las horas, a la cantidad de dias le multiplicas por 24 .....

Código Delphi [-]
var
 h1, h2 : TTime;
 dias, horas, suma : Real;
 Hour, Min, Sec, MSec: Word;
begin
 h1 := StrToTime('23:00');
 h2 := StrToTime('21:10');

 suma := h1 + h2;
 
 dias := Int(suma);//obtenemos la parte entera
 horas := Frac(suma); //la parte fraccionaria
 
 DecodeTime(suma, Hour, Min, Sec, MSec); //descomponemos
 
 dias := dias*24 + Hour;
 
 showmessage(FloatToStr(dias)+' : '+IntToStr(Min));

De esa forma tomamos en cuenta los minutos, segundos....

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #6  
Antiguo 16-06-2010
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
Muchisimas gracias Caro

funciona con lo que me dices a la perfección.

Para rizar el rizo ¿es posible ver siempre la hora y minutos con dos digitos?

Veo que cuando aparece por ejemplo 3h pone 3:0

¿Es posible ver 03:00?

No tiene demasiada importancia pero quedaría mas presentable en el informe. Si no lo dejo como está porque el cálculo está correcto.


Un saludo
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #7  
Antiguo 16-06-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Delphitest Ver Mensaje
Para rizar el rizo ¿es posible ver siempre la hora y minutos con dos digitos?
Si se puede, para ello puedes utilizar la función Format:

Código Delphi [-]
showmessage(FloatToStr(dias)+' : '+Format('%0.2d',[Min]));

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #8  
Antiguo 16-06-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Otra cosita que se me olvidaba, para la parte de las horas debes aplicar la función Trunc para que te devuelva como entero.

Código Delphi [-]
  showmessage(Format('%0.2d',[Trunc(dias)])+' : '+Format('%0.2d',[Min]));

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #9  
Antiguo 16-06-2010
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
Solución rápida y eficaz

Muchas Gracias, ya lo he implantado y funciona a la perfección.
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
Respuesta



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
Suma de 2 Reales lKinGl Varios 8 14-04-2008 13:00:43
variable dentro de una variable molinero1 Varios 3 23-04-2007 12:44:48
Suma de Memos sierraja Varios 4 09-05-2005 16:39:36
Suma de un campo silviodp Conexión con bases de datos 13 11-06-2004 16:51:23
suma de un campo sql noe SQL 16 19-01-2004 18:52:54


La franja horaria es GMT +2. Ahora son las 21:57:40.


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