![]() |
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. |
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. |
Muchas gracias, voy a intentarlo a ver si soy capaz de hacerlo.
Salu2.CRIS. |
Disculpen pero, esto ¿qué tiene que ver con matemáticas?
// Saludos |
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. |
No se como hacerlo, gracias a los tres.
Salu2.CRIS. |
Cita:
// Saludos |
Cita:
¿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. |
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. |
Hasta aqui llego chicos, pero me da horas minutos y segundos. |
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.
|
Código:
DecodeTime(StrToTime("00:"+label1->Caption),h1,m1,s1,ms1); |
Al menos en Delphi7 existe la función MinutesBetween, que devuelve la diferencia en minutos entre dos variables tipo TDateTime.
Cita:
|
Solucionado bajando los tiempos en el ini en milisegundos:
Muchas gracias a todos y un Salu2.CRIS. |
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') :confused: 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 |
La franja horaria es GMT +2. Ahora son las 09:20:36. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi