| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Jue 05 Nov, 2009 4:27 pm Asunto: convertir a timepo |
|
|
Hola amigos del foro
Tengo la necesidad de mostrarle a un usuario el timpo restante de un proceso
Tengo Lineas por segundo, total de lineas, linea actual y quiciera decirle que el tiempo restante es por ejemplo 0h7m34s y que este timepo vaya decrementando segun pasan las lineas algua ayuda por favor?
gracias _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Jue 05 Nov, 2009 5:46 pm Asunto: |
|
|
Parece que no me hice entender.
Angel lo que necesito no es: ha transcurrdio 1seg,2seg,.....1min;
Lo que necesito es faltan: 2horas:3min:14seg........0horas:0minutos:2segundos
espero haberme hecho entender esta vez  _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Jue 05 Nov, 2009 7:20 pm Asunto: Re: convertir a timepo |
|
|
| ifrit escribió: | Hola amigos del foro
Tengo la necesidad de mostrarle a un usuario el timpo restante de un proceso
Tengo Lineas por segundo, total de lineas, linea actual y quiciera decirle que el tiempo restante es por ejemplo 0h7m34s y que este timepo vaya decrementando segun pasan las lineas algua ayuda por favor?
gracias |
Tiempo_que_Falta = (Total_líneas - Linea_Actual)*Lineas_por_segundo
Lo metes en tu bucle y lo muestras como quieras en un TLabel...
Saludos. |
|
| Volver arriba |
|
 |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Jue 05 Nov, 2009 9:21 pm Asunto: |
|
|
Hola escafandra, gracias por responder , pero como podria descomponer el resultado para obtener un resultado como h:m:s restantes?
muchas gracias _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Vie 06 Nov, 2009 1:14 am Asunto: |
|
|
| Código: | int Segundos = TiempoRestante%60;
int Minutos = (TiempoRestante/60)%60;
int Horas = TiempoRestante/3600;
String TimeR = IntToStr(Horas) + ":"+IntToStr(Minutos)+":"+IntToStr(Segundos); |
Saludos.
Ultima edición por escafandra el Vie 06 Nov, 2009 2:55 pm, editado 1 vez |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 06 Nov, 2009 9:54 am Asunto: |
|
|
Más fácil: DecodeTime. Si sabes el tiempo total, con la fórmula de escafandra:
| Código: | TDateTime Tiempo_que_Falta;
Word Hora, Minuto, Segundos, Miliseg;
Tiempo_que_Falta = (Total_líneas - Linea_Actual)*Lineas_por_segundo;
DecodeTime(Tiempo_que_Falta, Hora, Minuto, Segundos, Miliseg); |
Y si lo que quieres es sólo mostrarlo:
| Código: | Tiempo_que_Falta = (Total_líneas - Linea_Actual)*Lineas_por_segundo;
Tiempo_que_Falta.FormatString("hh:nn:ss"); |
_________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Vie 06 Nov, 2009 12:28 pm Asunto: Agradecido |
|
|
Muchas gracias Angel y escafandra, en cuanto lo puebe les dejo saber como me fue
gracias y saludos _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Sab 07 Nov, 2009 1:17 am Asunto: |
|
|
Si utilizamos el sistema que propone Angel aprovechando la clase TTimeDate, deberíamos incluir alguna corrección, dado que el tiempo viene dado en segundos y que la parte decimal del TDateTime representan fracciones del día de 24 horas:
| Código: |
float TiempoRestante = (Total_líneas - Linea_Actual)*Lineas_por_segundo;
TDateTime Tiempo_que_Falta = TiempoRestante/(24*3600);
Tiempo_que_Falta.FormatString("hh:nn:ss");
String TimeR = Tiempo_que_Falta.TimeString();
|
Saludos. |
|
| Volver arriba |
|
 |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Sab 07 Nov, 2009 1:50 pm Asunto: |
|
|
Hola escafanddra, efectivamente el metodo que me das es casi correcto solo que se debe quedar asi el calculo
float TiempoRestante = (Total_líneas - Linea_Actual)/Lineas_por_segundo; y no *Lineas_por_segundo
lo otro es que si las horas son 0 horas 12min y 34 seg me da el resultado como 12 horas 12min 34 seg, es decir las horas no se resetean a 0. Hay forma de hacer esto?
gracias _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Sab 07 Nov, 2009 7:30 pm Asunto: |
|
|
| ifrit escribió: | | ...si las horas son 0 horas 12min y 34 seg me da el resultado como 12 horas 12min 34 seg, es decir las horas no se resetean a 0. Hay forma de hacer esto? |
Esto no te fallará:
| Código: | int Segundos = TiempoRestante%60;
int Minutos = (TiempoRestante/60)%60;
int Horas = TiempoRestante/3600;
String TimeR = IntToStr(Horas) + ":"+IntToStr(Minutos)+":"+IntToStr(Segundos); |
De todas formas el formato""hh:nn:ss" es para 24 horas, a mi no me falla. No estarás usando algún modificador para para am/pm.
Prueba este código:
| Código: |
float TiempoRestante = 3503; // esto da 0:58:23 horas
TDateTime Tiempo_que_Falta = TiempoRestante/(24*3600);
Tiempo_que_Falta.FormatString("hh:nn:ss");
String TimeR = Tiempo_que_Falta.TimeString();
|
Saludos. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Dom 08 Nov, 2009 2:07 pm Asunto: |
|
|
| escafandra escribió: | | Si utilizamos el sistema que propone Angel aprovechando la clase TTimeDate, deberíamos incluir alguna corrección, dado que el tiempo viene dado en segundos y que la parte decimal del TDateTime representan fracciones del día de 24 horas |
Pero eso ya lo tiene en cuenta la función FormatString _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Lun 09 Nov, 2009 12:33 am Asunto: |
|
|
| Angel escribió: | | escafandra escribió: | | Si utilizamos el sistema que propone Angel aprovechando la clase TTimeDate, deberíamos incluir alguna corrección, dado que el tiempo viene dado en segundos y que la parte decimal del TDateTime representan fracciones del día de 24 horas |
Pero eso ya lo tiene en cuenta la función FormatString |
Me refería a esto, Angel, por si ifrit no conseguía hacer funcionar tu ejemplo :
| Código: | TDateTime Tiempo_que_Falta = TiempoRestante/(24*3600); |
Saludos. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 09 Nov, 2009 11:27 am Asunto: |
|
|
He hecho una pequeña prueba. He puesto en un formulario dos TLabel (una con la hora final y otra con el tiempo que falta) y un TButton y en OnClick del botón este código:
| Código: | TDateTime tFinal = EncodeTime(11, 30, 0, 0);
Label2->Caption = "Falta: " + (tFinal - Time()).FormatString("hh:nn:ss");
|
Y en la segunda etiqueta me iba haciendo la cuenta atrás del tiempo que falta para llegar al que he indicado. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Lun 09 Nov, 2009 12:35 pm Asunto: |
|
|
Hola amigos , muchas gracias a los dos por haberme respondido la duda , ya resolvi con las repuestas que me ponen uds, he heho un hibrido de lo que me mandan los dos y he resuelto a las mil maravillas.
Escafandra el tema de porqué se veia la hora en 12 y no en 0 esta resuelto, la cuestion viene dada por la configuracion de la hora en la pc, panel de control -->configuracion regional y de idioma-->el formato de la hora lo tengo de la siguiente forma hh:mm:ss y cuando uno instala windows por defecto es H:mm:ss bueno al ponerla por decfecto, es decir de esta ultima forma , se muestran las horas como 0 y al ponerlo de la otra forma se muestran las horas como 12
muchas gracias a a los dos y saludos _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
|