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 23-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Creo que estas haciéndote un lio para la operación.

Con el ejemplo citado, podrías indicarnos que resultado te da esta operación:

Código Delphi [-]
  ShowMessage(TimeToStr(DateTimePicker_HraFin.Time - DateTimePicker_HraIni.Time));

Seguramente hay fracciones de segundo por allí involucradas..
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #2  
Antiguo 03-04-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Hola

estaba revisando este hilo... y me queda una duda...

el problema es que tengo la hora 09:16:00 pero lo tengo en formato de String...

para convertirlo utilizo el StrToTime(hora)

con

HoursBetween(HoraFin, HoraIni) me entrega las horas que existen entre ambas... pero en que formato las estaría entregando ???

Salu2
__________________
BlueSteel
Responder Con Cita
  #3  
Antiguo 03-04-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Pues el formato lo puedes poner tu:
Código Delphi [-]
 Edit1.Text:= FormatDateTime('hh.mm.ss',Time);
Me parece.
Saludos
Responder Con Cita
  #4  
Antiguo 03-04-2008
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por BlueSteel Ver Mensaje
Hola

estaba revisando este hilo... y me queda una duda...

el problema es que tengo la hora 09:16:00 pero lo tengo en formato de String...

para convertirlo utilizo el StrToTime(hora)

con

HoursBetween(HoraFin, HoraIni) me entrega las horas que existen entre ambas... pero en que formato las estaría entregando ???

Salu2
HoursBetween devuelve un tipo de dato Int64, que significan el valor de horas entre una y la otra, por ejemplo (Este ejemplo lo saco de la ayuda de Delphi):

Si yo quiero saber cuantas son las horas entre 9:00 AM y 9:59:59 AM esta funcion me devolvera 0.

Cita:
Empezado por Ayuda Delphi
Call HoursBetween to obtain the difference, in hours, between two TDateTime values. HoursBetween counts only entire hours. Thus, HoursBetween reports the difference between 9:00 AM and 9:59:59 AM as 0 because the difference is one second short of an entire hour.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #5  
Antiguo 03-04-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Es decir...

tendria entonces que preguntar por los minutos transcurridos entre dos horas..

el valor dividirlo por 60 para así obtener la cantidad de horas y minutos...

Ok...

veré como realizo esto...

Salu2
__________________
BlueSteel
Responder Con Cita
  #6  
Antiguo 03-04-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Código Delphi [-]
var
hora1, hora2: TTime;
horat: TTime;
begin
   hora2:= StrToTime(Edit2.Text);
   hora1:= StrToTime(Edit3.Text);
   horat := hora1 - hora2;
   Edit4.Text:= TimeToStr(horat) ;
end;
Responder Con Cita
  #7  
Antiguo 04-04-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Ya.. tengo lista una parte...

me explico... como los valores los tomo de un StringGrid, en donde tiene las sgtes columnas

0 -> Dias de Semana (Lun, Mar, Etc)
1 -> Fecha
2 -> Hora de Entrada1
3 -> Hora de Salida1
4 -> Hora de Entrada2
5 -> Hora de Salida1
6 -> Hora de Entrada3
7 -> Hora de Salida1
8 -> Suma de Horas Trabajadas

El problema lo tengo cuando en una celda específica no existe nada... y preguntar por cada uno.. me dará mucho trabajo... existe una forma de que si el valor es vacio no me de error...

y el otro problema que se me puede ocacionar es si solo existe hora de entrada y no de salida....???? o Viceversa

Bueno, se supone que en la columna 8 del StringGrid debo poner esto (se que esta en minutos.. pero despues lo arreglo)

Código Delphi [-]
Marcado.Rows[i][8]:= IntToStr( MinutesBetween(StrToTime(Marcado.Rows[i][3]),StrToTime(Marcado.Rows[i][2])) 
                                                    + MinutesBetween(StrToTime(Marcado.Rows[i][5]),StrToTime(Marcado.Rows[i][4]))
                                                    + MinutesBetween(StrToTime(Marcado.Rows[i][7]),StrToTime(Marcado.Rows[i][6])));

Espero me hayan entendido...

Salu2
__________________
BlueSteel

Última edición por BlueSteel fecha: 04-04-2008 a las 00:27:52. Razón: ordenar
Responder Con Cita
  #8  
Antiguo 04-04-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Ahora veo lo que estas haciendo, es algo asi.
Saludos
Responder Con Cita
  #9  
Antiguo 04-04-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
se me ocurrio realizar lo sgte

Código Delphi [-]
   i : Integer;
   Ent1, Ent2, Ent3 : TTime;
   Sal1, Sal2, Sal3 : TTime;
begin
     i:= 1;
     For i:=1 to Marcado.RowCount-1 Do
         Begin
               If Marcado.Rows[i][2] = ' ' Then Ent1 := StrToTime('0') Else Ent1 := StrToTime(Marcado.Rows[i][2]);
               If Marcado.Rows[i][3] = ' ' Then Sal1 := StrToTime('0') Else Sal1 := StrToTime(Marcado.Rows[i][3]);
               If Marcado.Rows[i][4] = ' ' Then Ent2 := StrToTime('0') Else Ent2 := StrToTime(Marcado.Rows[i][4]);
               If Marcado.Rows[i][5] = ' ' Then Sal2 := StrToTime('0') Else Sal2 := StrToTime(Marcado.Rows[i][5]);
               If Marcado.Rows[i][6] = ' ' Then Ent3 := StrToTime('0') Else Ent3 := StrToTime(Marcado.Rows[i][6]);
               If Marcado.Rows[i][7] = ' ' Then Sal3 := StrToTime('0') Else Sal3 := StrToTime(Marcado.Rows[i][7]);
               Marcado.Rows[i][8] := IntToStr(MinutesBetween(Sal1,Ent1)+ MinutesBetween(Sal2,Ent2)+ MinutesBetween(Sal3,Ent3));
         End;

pero igual me esta dando el sgte error

el problema de esto es que hay dias en que no se marca tarjeta... u otras personas marcan solo 2 veces al día.. y otros 4 o 6 veces al día segun corresponda...



raised exception class EConvertError with message "' is not a valid time'.

Bueno..igual seguiré intentando...

Salu2
__________________
BlueSteel

Última edición por BlueSteel fecha: 04-04-2008 a las 00:42:13. Razón: agregar datos
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


La franja horaria es GMT +2. Ahora son las 01:17:44.


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