Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

convertir a timepo

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: convertir a timepo Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

¿Con un TTimer? En el evento OnTimer, resta al tiempo que hay el transcurrido.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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 Confused
_________________
Todos somos ignorantes, lo que no todos ignoramos lo mismo...
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Re: convertir a timepo Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Agradecido Responder citando

Muchas gracias Angel y escafandra, en cuanto lo puebe les dejo saber como me fue Wink
gracias y saludos
_________________
Todos somos ignorantes, lo que no todos ignoramos lo mismo...
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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 Very Happy:
Código:
TDateTime Tiempo_que_Falta = TiempoRestante/(24*3600);


Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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 Wink
muchas gracias a a los dos y saludos
_________________
Todos somos ignorantes, lo que no todos ignoramos lo mismo...
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.