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 02-11-2010
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Calculo de tiempos

Hola a todos.

Tengo una duda con el codigo siguiente que me genera un error de x is not a valid integer value en las lineas que estan marcadas en rojo.

Lo que quiero hacer con este codigo es sacar a partir de un tiempo inicial, el de MaskEdit2.Text (ej. 03:25:45) un porcentaje de tiempo del cual pongo el valor (ej. 12) en JVvalidateEdit2 y desde aqui sacar este valor en tiempo (MaskEdit3.text) y el valor inicial + el porcentaje en Maskedit4.text.

El problema viene en la asignacion del valor a las variables Hores, Minuts i Segons.

Código Delphi [-]
 
procedure TF_Calculadora.JvXPButton2Click(Sender: TObject);
var
H: Ttime;
Hora, Minuto, Segundo, Msec: Word;
J,K : Double;
Hores, Minuts, Segons: Integer;
begin
        H:=StrToTime(MaskEdit2.Text);
        DecodeTime (H, Hora, Minuto, Segundo, Msec);
        J:=(Hora*3600)+(Minuto*60)+Segundo;
        K:=J*StrToFloat(JvValidateEdit2.text)/100;
        Hores  :=  StrToInt(FloatToStr(K)) div 3600;
        Minuts := StrToInt(FloatToStr(K)) div 60 mod 60;
        Segons := StrToInt(FloatToStr(K)) mod 60;
        MaskEdit3.Text:= TimeToStr(EncodeTime (Hores, Minuts, Segons,Msec));
        Maskedit4.text:=TimeToStr(StrToTime(MaskEdit2.Text)+StrToTime(MaskEdit3.Text));
end;

Si alguien me echa un cable....

Gracias por adelantado

Josep
Responder Con Cita
  #2  
Antiguo 02-11-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Código:
Hores  :=  StrToInt(FloatToStr(K)) div 3600;
Así, a simple vista, me parece que estás dividiendo un string entre 3600.
Cambia el paréntesis del final

Código:
Hores  :=  StrToInt(FloatToStr(K div 3600));
Responder Con Cita
  #3  
Antiguo 02-11-2010
Avatar de noshy
noshy noshy is offline
Miembro
 
Registrado: jul 2003
Posts: 139
Poder: 21
noshy Va por buen camino
Prueba asi...

Hores := round(K) div 3600;
__________________
\_--> NoShY <--_/
Responder Con Cita
  #4  
Antiguo 02-11-2010
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Gracias a los dos

La solucion de noshy funciona de fábula.

Casimiro creo que no es una ubicacion de parentesis pues falla igual

Saludos

Josep
Responder Con Cita
  #5  
Antiguo 02-11-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
¿Mi pregunta es para que conviertes un número a un string si luego vuelves a convertirlo a un valor numérico?... FloatToStr te va a convertir a string un número decimal el cual no va a aceptar StrToInt ya que espera un número entero. ¿No querrás truncar el resultado de la operación?.. en ese caso:

Código Delphi [-]
Hores := Trunc(K) div 3600

Agrego: No había leído la respuesta de noshy
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 02-11-2010
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Gracias tambien por tu respuesta

Ahora necesitaria saber como le digo a esta linea que el Edit1.text tenga solo dos decimales

Código Delphi [-]
 
Edit1.Text:= FloatToStr(StrToFloat(JvValidateEdit1.Text)/I);

Es un campo que no se guarda en ninguna tabla.

Gracias

Josep
Responder Con Cita
  #7  
Antiguo 02-11-2010
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
Quizás esto te sirva:

Código Delphi [-]
  Edit1.Text:= FloatToStr(
                int ( ( StrToFloat(JvValidateEdit1.Text)/I ) *100 ) /100
                          );

Está hecho "a ojo", no lo he probado, pero seguramente te funcionará.

Saludos.
Responder Con Cita
  #8  
Antiguo 02-11-2010
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Perfecto rrf, además le he añadido al final Km/h y queda una presentación profesionas....

Gracias

Josep
Responder Con Cita
  #9  
Antiguo 03-11-2010
Avatar de noshy
noshy noshy is offline
Miembro
 
Registrado: jul 2003
Posts: 139
Poder: 21
noshy Va por buen camino
yo usaria la funcion FloatToStrF(), me parece que menos quilombo.

Código Delphi [-]
Edit1.Text:= FloatToStrF(StrToFloat(JvValidateEdit1.Text)/I, ffFixed, 8, 2 );
__________________
\_--> NoShY <--_/
Responder Con Cita
  #10  
Antiguo 04-11-2010
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Gracias noshy, funciona correctamente y posiblemente sea mas ortodoxo

Saludos

Josep
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
Tiempos de Respuesta Maury Manosalva MySQL 2 01-02-2007 17:59:46
Estimar tiempos de desarrollo AzidRain Varios 17 13-11-2006 19:12:58
Fueron tiempos horribles marcoszorrilla Noticias 2 27-01-2005 21:17:46
Sumar tiempos Aztaroth SQL 1 06-05-2004 19:36:37
Sumar tiempos con SUM Ruben_Cu SQL 4 03-11-2003 03:10:49


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