Autor
|
Tema: barra de progreso en c++ (Leído 5,287 veces)
|
d91
Desconectado
Mensajes: 165
|
hola a toda la comunidad, solo necesito implementar una barra de progreso en c++, por ejemplo tengo un archivo txt y lo necesito cargar a una determinada estructura; pero tengo que mostrar el avance de la carga, ya he buscado como hacer las barras, pero las que he hecho solo funcionan con un ciclo for o con la funcion sleep donde yo decido cuanto se tardara en llenar, lo que ya se como hacer es contar el tiempo que ha durado la carga del archivo, pero no se como contar el tiempo restante para la carga que creo ayudaria a llenar la barra agradecere las ideas.
|
|
|
En línea
|
|
|
|
El Benjo
|
Lo que puedes hacer para determinar el tiempo restante, es una simple operación como la siguiente. TiempoRestante = (BytesLeídos / TiempoDeActividad) * (BytesTotalesALeer - BytesLeídos) Saludos. Espero te funcione.
|
|
|
En línea
|
www.es.neftis-ai.comSí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
(Bytes leidos / Bytes totales)*100
Eso te dira que porcentaje de la barra tienes que colorear. Aun asi tendras que poner un sleep para actualizar cada X tiempo (si lo haces en tiempo real sera un desperdicio de recursos).
Una actualización por segundo esta bien.
|
|
|
En línea
|
|
|
|
El Benjo
|
Me supongo que la lectura la haces leyendo x bytes del archivo de una vez y no byte por byte. De ser así, puedes poner la operación después de cada lectura, y no se desperdicia tanto tiempo. Paso a explicar:
Suponiendo que haces la lectura de 100 000 bytes (100 Kbytes por vez) y tienes un archivo de 10 000 000 (10 Mbytes) entonces:
10 000 000 / 100 000 = 100
De esta manera sólo se realiza esta operación 100 veces. Si manejas archivos más grandes que eso y quieres que sean menos operaciones puedes incrementar el buffer de lectura o incluso no hacer nada. Para los micros actuales donde por 99 euros consigues arriba de 40 Gflops, 100 operaciones aritméticas de división, no son nada. Y dependiendo de la manera en que lo hagas, el presentar la información en la pantalla tampoco debe ser un problema.
Otra cosa, el comentario anterior a este (el de amchacon) te da el porcentaje de la barra. El primer comentario mío te debería dar el tiempo restante. Saludos.
|
|
« Última modificación: 27 Abril 2014, 20:22 pm por El Benjo »
|
En línea
|
www.es.neftis-ai.comSí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
La barra de progueso debe hacerse en un hilo de ejecución aparte para no bloquear el proceso de carga. De hecho yo soy partidario de usar el proceso principal solo para dibujar, todo lo demás en hilos aparte.
El método de benjo es más eficiente pero hay que implementarlo con "condiction variables", y eso complica un poco el asunto. Hacer un refresco cada segundo es mucho más sencillo (duermes el hilo un segundo y listo).
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
barra de progreso
.NET (C#, VB.NET, ASP)
|
DaNuK
|
2
|
4,517
|
10 Marzo 2010, 02:05 am
por DaNuK
|
|
|
Barra de progreso [Batch]
Scripting
|
Nilrac
|
8
|
17,073
|
13 Enero 2016, 09:13 am
por Eleкtro
|
|
|
VBS barra de progreso
Programación Visual Basic
|
quico5
|
0
|
3,418
|
14 Agosto 2012, 20:41 pm
por quico5
|
|
|
Barra de progreso no termina
« 1 2 »
.NET (C#, VB.NET, ASP)
|
Lekim
|
11
|
7,971
|
14 Abril 2016, 17:42 pm
por Lekim
|
|
|
Añadir codigo de Barra de Progreso a un BAT
Scripting
|
BDJMarcelo
|
5
|
7,188
|
3 Julio 2017, 21:02 pm
por BDJMarcelo
|
|