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 11-11-2005
CRIS CRIS is offline
Miembro
 
Registrado: jul 2003
Posts: 63
Poder: 21
CRIS Va por buen camino
Problemilla con un calculo.

Hola chicos aqui tamos con un problema que ma surgido y no se como resolverlo, os explico.

Tengo label1 y label2 con este caption el label1 1:12:150 y 1:13:250 el label2, el formto es de minuto segundos milesimas, lo que necesito es que me compruebe si entre los dos label hay una diferencia de 2 minutos, si la hay que me devuelva un mensajito y si no la hay pues que me devuelva otro mensaje.

Espero haberme explicado con claridad, como siempre un saludo.CRIS.

Última edición por CRIS fecha: 11-11-2005 a las 16:06:50.
Responder Con Cita
  #2  
Antiguo 11-11-2005
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.281
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
Deberías decir en qué parte tienes el problema...
(1a) Primero deberías convertir los valores a DateTime (StrToDateTime)
(2a) Una vez tienes TDateTime hay una función llamada DecodeDateTime que te "trocea" un DateTime y te devuelve las horas, minutos, segundos y milésimas...

(1b) O directamente extraer cada una de las partes correspondientes a horas, minutos, segundos y milésimas (función Copy)

A partir de aquí es cuestión de un IF, una sencilla resta, sacar el mensaje.
__________________
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 11-11-2005
CRIS CRIS is offline
Miembro
 
Registrado: jul 2003
Posts: 63
Poder: 21
CRIS Va por buen camino
Muchas gracias, voy a intentarlo a ver si soy capaz de hacerlo.

Salu2.CRIS.
Responder Con Cita
  #4  
Antiguo 11-11-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Disculpen pero, esto ¿qué tiene que ver con matemáticas?

// Saludos
Responder Con Cita
  #5  
Antiguo 11-11-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Hola Román, yo recuerdo un catedrático de matemáticas que tuve que contaba chistes muy buenos, pero nunca le pregunte la relación del humor y la cifra, por si acaso......

Jeje.

Un Saludo atemporal.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 11-11-2005
CRIS CRIS is offline
Miembro
 
Registrado: jul 2003
Posts: 63
Poder: 21
CRIS Va por buen camino
No se como hacerlo, gracias a los tres.

Salu2.CRIS.
Responder Con Cita
  #7  
Antiguo 11-11-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por CRIS
Tengo label1 y label2 con este caption el label1 1:12:150 y 1:13:250 el label2
Una pregunta. ¿De dónde obtienen estos valores las etiquetas? Yo creo que sería mejor que buscaras la diferencia de tiempos en los valores originales en lugar de basar tu código en elementos de la interfaz de usuario.

// Saludos
Responder Con Cita
  #8  
Antiguo 11-11-2005
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.281
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
Cita:
Empezado por CRIS
No se como hacerlo
Me reitero en lo dicho antes. Dinos qué es lo que no saber hacer. Danos algo más de info...

¿No entiendes las funciones?
¿No sabes cómo usarlas?
¿Te dan error (y qué error te dan)?
¿No te dan error, pero no te funciona?

La verdad es que 4 palabras -del último mensaje- (sin contar las gracias y el saludo) es muy poca información.
__________________
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
  #9  
Antiguo 11-11-2005
CRIS CRIS is offline
Miembro
 
Registrado: jul 2003
Posts: 63
Poder: 21
CRIS Va por buen camino
Los datos los pillo de un fichero.ini que me bajo de internet, el label1 pilla el dato del ini y el label2 pilla el dato de un fichero de texto que esta encriptado, lo que necesito es comparar los dos tiempos y si es mayor de dos segundos que me devuelva un mensaje de, la vuelta rapida supera en dos segundos el record de la pista.

Neftali estas dos cosas son las que me ocurre ¿No entiend las funciones?
¿No se cómo usarlas?

pd. el saludo y las gracias nunca pueden faltar.

Salu2.CRIS.
Responder Con Cita
  #10  
Antiguo 11-11-2005
CRIS CRIS is offline
Miembro
 
Registrado: jul 2003
Posts: 63
Poder: 21
CRIS Va por buen camino
Código Delphi [-]
procedure TForm1.SpeedButton1Click(Sender: TObject);
var recordpista,vueltarapida,Diferencia:TTime;
begin
recordpista:=StrToTime(label1.caption);
vueltarapida:=StrToTime(label2.caption);
Diferencia:=recordpista-vueltarapida;
label3.caption:=TimeToStr(Diferencia);
end;
end.

Hasta aqui llego chicos, pero me da horas minutos y segundos.
Responder Con Cita
  #11  
Antiguo 11-11-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Supongo que de "diferencia" tendrías que usar DecodeDateTime para obtener los segundos y luego una simple comparación para ver si es mayo o no a 2 segundos. DecodeDateTime viene muy bien explicado en la ayuda de delphi, presionando F1 sobre la palabra. O tal vez solo comparando Dierencia.
__________________

Responder Con Cita
  #12  
Antiguo 11-11-2005
Avatar de OSKR
OSKR OSKR is offline
Miembro
 
Registrado: nov 2004
Ubicación: San Cristóbal/Táchira/Venezuela
Posts: 389
Poder: 20
OSKR Va por buen camino
Código:
DecodeTime(StrToTime("00:"+label1->Caption),h1,m1,s1,ms1);
DecodeTime(StrToTime("00:"+label2->Caption),h1,m2,s2,ms2);
if( abs(((m1*60*1000+s1*1000+ms1)-(m2*60*1000+s2*1000+ms2))/(1000*60)) >= 2)
 //hay por lo menos 2 segundos de diferencia
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad."
Simón Bolívar
(Carta al Coronel Inglés Patricio Cambell 05/08/1829).
Responder Con Cita
  #13  
Antiguo 11-11-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Al menos en Delphi7 existe la función MinutesBetween, que devuelve la diferencia en minutos entre dos variables tipo TDateTime.

Cita:
Empezado por Ayuda de Delphi
MinutesBetween

Returns the number of minutes between two specified TDateTime values.

Unit

DateUtils

Category

date/time routines

Description

Call MinutesBetween to obtain the difference, in minutes, between two TDateTime values. MinutesBetween counts only entire minutes. Thus, MinutesBetween reports the difference between 9:00:00 AM and 9:00:59:999 AM as 0 because the difference is one millisecond short of an entire minute.
Un saludo
Responder Con Cita
  #14  
Antiguo 12-11-2005
CRIS CRIS is offline
Miembro
 
Registrado: jul 2003
Posts: 63
Poder: 21
CRIS Va por buen camino
Solucionado bajando los tiempos en el ini en milisegundos:

Código Delphi [-]
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
tiempo1:variant;
tiempo2:variant;
nValor,ErrCode:Integer;
begin
tiempo1:=edit2.text;
tiempo2:=edit3.Text;
diferenciavuelta.Text:= (tiempo2)-(tiempo1);
val(diferenciavuelta.Text,nValor,Errcode);
    if nValor > StrToInt('2000') then
    mensaje.Caption:='Vuelta Mala, 2 Seg +'
    else
    mensaje.Caption:='Vuelta Buena';
 if diferenciavuelta.Text='2000' then mensaje.Caption:='Vuelta Mala, 2 Seg +';

end;

end.

Muchas gracias a todos y un Salu2.CRIS.
Responder Con Cita
  #15  
Antiguo 12-11-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
CRIS, ten cuidado, ese código es "muy perezoso", y puedes tener muchos problemas con él. Deberías leer de nuevo las soluciones que te han propuesto.

Razones:

- Val intenta convertir el diferencia.Text en Nvalor, si no se puede convertir, Devuelve el ErrCode, que despues no lo usas para nada, El valor que tenga nvalor puede estar indefinido, o peor aún, será cero, indicando que ha hecho la mejor vuelta posible, cuando en realidad no es cierto.

- Estas realizando conversiones innecesarias:
if nValor > StrToInt('2000') quizás if nValor > 2000

- Que jamás se ejecute tu programa entre las 23:59:00 y las 0:00:00, como no controlas las fechas, dará casi 24 horas de diferencia.

Por tus mensajes, deduzco que tienes prisas en terminarlo. Para el reloj y estudia las funciones de fechas, vienen muy bien en la ayuda, y si despues tienes preguntas, estaremos por aquí.

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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 18:42:04.


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