FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Calcular tiempo restante y mostrar en porcentaje
Muy buenas...
Estoy usando variables tipo TdateTime, para medir tiempo de adquisicion de datos. Uso durTotal para duración total de datos Luego comparo con la fecha y hora actual. hago la resta if (Now()>=DurTotal) then termino captura. Cuando muestro tiempo restante (durTotal -now) si la duracción total supera en unas 12 horas o un dia me la muestra mal. Y como puedo hacer que se muestre en porcentaje (como son valores (tdatetime) con muchos decimales no se como hacerlo) para usar una progressbar Un saludo... |
#2
|
|||
|
|||
No sé que versión de delphi tienes, pero si es superior a la 6 échale un vistazo a la libreria DateUtils, creo que tiene lo que buscas.
Saludos.
__________________
Amar al mundo apasionadamente. |
#3
|
||||
|
||||
Hola.
No lo comentas en tu mensaje pero imagino que estarás usando FloatToStr(now) para trabajar con las fechas en modo numérico, esto te da un número con 10 decimales que si lo multiplicas por 10000000000 te da un número entero con lo que podrás trabajar. Espero que te sirva. Saludos |
#4
|
||||
|
||||
Cita:
Para mostrar más de 24 horas sin que te un resultado erróneo:
Ejemplo de llamada:
Y en cuanto a obtener los valores para usar en un ProgressBar, newtron ya te ha dado la solución. Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#5
|
|||
|
|||
Muchas gracias....
Voy a probar... Si... Me salian numeros flotantes Estoy usando SpinEdits indicando Dias, Horas y minutos, para calcular la duración total
Hay alguna forma de manejarlo mejor. Esto me funciona pero me parece complicado. Ya os comentare lo del porcentaje... |
#6
|
|||
|
|||
No me funciona....
No se que estoy haciendo mal.. uso directamente fechas en Tdatetime. perdon!!!!! DurTotal es Extended; No uso los dias en string directamente... Uso dias, horas, minutos en Spinedits y los convierto a mano en tdatetime con la formula anterior. A lo mejor no lo hago bien??? Lo curioso es que me funciona bien al comparar. Comienzo la captura InicioCap=hora actual) le añado la DurTotal(la que paso con los SpinEdits) y comparo Now>=DurTotal (esto dentro de un timer)
Última edición por alquimista fecha: 16-05-2011 a las 15:47:51. |
#7
|
||||
|
||||
Lo mejor es que utilices las funciones que te da Delphi, siempre que puedas.
Si cambias de version de Delphi, es más seguro que puedas compilar sin problemas. También si quieres pasar el código a FreePascal / Lazarus por ejemplo. Puede que cambie la representación interna de un TDateTime (parte entera días, parte decimal horas) a otra diferente. Si utilizas funciones, solo deberás reemplazar o reprogramar la función, si es que la nueva versión no lo ha hecho ya. Mira estas dos de la Unit DateUtils:
Deberás tirar los datos de los SpinEdit dentro de los parámetros correspondientes de la función y obtendrás un TDateTime. Última edición por duilioisola fecha: 16-05-2011 a las 15:56:58. |
#8
|
|||
|
|||
Estaba pensando en rediseñar y usar las funciones de delphi..
Uso Delphi 2007 por lo que no tendre problemas... Lo que pasa que hay tantas funciones que tiene para fechas que no sabia por donde empezar... |
#9
|
||||
|
||||
Hola alquimista.
Usar las funciones de Delphi, como ya te lo comentó duilioisola, es más simple y seguro. Pero veo que en este cálculo tenés un error: No es: SEDay.Value * 3600 * 60, ya que el día tiene 24 horas y no 60. Lo que correspondería es: SEDay.Value * 24 * 3600. Seguramente sea eso lo que te genere el error. Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#10
|
|||
|
|||
He modificado el error de las 24 horas.. y he puesto 1 dia y 1 minuto y al pasar el minuto me muestra que quedan las 24 horas restantes. Parece que esto va bien...
aunque antes ya habia desactivado el spinedit de los dias... y lo del porcentaje no me iba bien... EStoy probando lo del encodedatetime... Vamos estoy reescribiendo con otras variables para ir comparando los valores antiguos y los nuevos... |
#11
|
|||
|
|||
Bueno...
vale... Me falta lo del porcentaje para una barra de progreso.... ¿Que hago ahora?.. paso el str a numero otra vez y lo multiplico por 10000000000 ?? No me queda muy claro... Ya he trabajado con las funciones de delphi y he rehecho las rutinas Lo he solucionado de esta forma.. Por si a alguien le sirve....
Si me podeis poner algún ejemplo de lo del porcentaje.. Gracias por la ayuda... |
#12
|
||||
|
||||
Hola.
Poné en un form un TTimer un TProgressBar y un TLabel y probá si este código hace más o menos lo que buscas: Como verás las pruebas las hice con minutos, si usaba días u horas estaría más seguro, pero la respuesta hubiera llegado un poco tarde... Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 17-05-2011 a las 08:04:52. |
#13
|
||||
|
||||
Regla de tres simple:
Código:
Tiempo_Inicial = Hora de Comienzo Tiempo_Final = Hora de Finalizacion Total_Tiempo = Tiempo_Final - Tiempo_Inicial Tiempo_Transcurrido = Now - Tiempo_Inicial Total_Tiempo -------- 100% Tiempo_Transcurrido --- x% x = (Tiempo_Transcurrido x 100%) / Total_Tiempo |
#14
|
|||
|
|||
El problema es que al ver el pedazo de numero que me daba no sabia como manejarlo.
La idea de obtenerlo en minutos reduce el numero y simplifica.. Gracias, a probar y ya os comento.. Un saludo a todos |
#15
|
|||
|
|||
Perfect!!
Gracias ecfisa, tu solución me ha funcionado al 100% de progreso.
Lo mejor de todo es que las modificaciones que me habeis comentado me han hecho comprender mejor lo de las fechas y es mas !!! lo he entendido!!! Un saludo a todos. Sois los mejores. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
porcentaje restante entre dos fechas - delphi | amo3k | OOP | 6 | 13-02-2010 16:08:54 |
mostrar un porcentaje o progressbar | rzf1983 | Varios | 8 | 25-10-2007 19:05:13 |
tiempo restante | fedeloko | Varios | 3 | 30-11-2004 18:49:51 |
mostrar porcentaje con CGauge del texto de un Edit | garth | C++ Builder | 3 | 26-03-2004 12:23:25 |
Matemáticas: Calcular porcentaje | DarkByte | Varios | 9 | 01-02-2004 17:42:08 |
|