hago uan consulta para ver si alguien me peude ayudar. estoy haciendo un programa que tiene que analizar muchas cosas y a veces se pega trabajando porque es mucha informacion. Aunque el termian de ahcer su trabajo y culmina con exito.
A mi me gustaria que mientras el se pega por lo menos pudiera ir mostrando una barra de progreso o algo por el estilo y no logro hacer que lo haga, e tratado con u label que vaya mostrando el progreso pero el programa no logra mostrar nada porque se pega.
¿que solucion podria tener este problema?
Seguramente uses un bucle, si pones DoEvents
en el, cre que funcionara
Creo que deberias agregar mas detalles sobre esa aplicacion, pero te recomiendo que hagas el programa en partes, optimiza el codigo, trata de poner la menor cantidad de codigo en la funcion principal,crea mas funciones y separa todo para que no recargues la memoria creo que es lo que se me ocurre con los datos que nos das...
bueno por ejemplo una parte del programa se encarga de listar los directorios y agregarlos en una base de datos. con pocos archivos puede ser rapido, pero con 20000 archivos se echa su ratica como unos 3min. Pero a mi me gustaria que en esos 3min yo pueda poner un label o halgo que valla imprimeindo como va el progreso del programa. Es todo lo que quiero, aqui esta el codigo:
Public Function Listar_Directorios(directorio As String)
Dim Subdirectorio As Folder
Dim ruta As String
Dim ext As String
Set El_Directorio = fso.GetFolder(Trim$(directorio))
If existe("archivos", "ruta", directorio) Then Else ejecutar ("INSERT INTO `archivos` (`ruta`, `carpeta` )VALUES ('" & seguridad(directorio) & "', 1) ")
For Each El_Archivo In El_Directorio.Files
ruta = El_Directorio.Path & "\" & El_Archivo.Name
If existe("archivos", "ruta", ruta) Then
Else
ext = extensión(El_Archivo.Name)
ejecutar ("INSERT INTO `archivos` (`ruta`, `extensión`, `tamaño` )VALUES ('" & seguridad(ruta) & "', '" & ext & "', '" & FileLen(ruta) & "') ")
End If
Next El_Archivo
For Each Subdirectorio In El_Directorio.SubFolders
ruta = El_Directorio.Path & "\" & Subdirectorio.Name
If existe("archivos", "ruta", ruta) Then Else ejecutar ("INSERT INTO `archivos` (`ruta`, `carpeta` )VALUES ('" & seguridad(ruta) & "', 1) ")
Listar_Directorios (Subdirectorio)
Next
End Function
Agregas una ProgressBar y pones esto:
ProgressBar1.Max = El_Directorio.Files
Y dentro del bucle pones:
ProgressBar1.Value = El_Archivo
Salu2! ;)
Gracias, lo puse en prueba y funciona, bien bien. no se tranca por lo menos gracias.
Cita de: *PsYkE1* en 28 Junio 2010, 03:37 AM
Agregas una ProgressBar y pones esto:
ProgressBar1.Max = El_Directorio.Files
Y dentro del bucle pones:
ProgressBar1.Value = El_Archivo
Salu2! ;)
ProgressBar1.Max = El_Directorio.Files
si
El_Directorio.Files es mayor de lo que puede aceptar
ProgressBar1.Max va a hacer un OverFlow es mejor una regla de tres xP
Donde:
ProgressBar1.Max = 30000 ' // = Cantidad de Archivos "Dejar 30000" para calcular con regla de tres.
' // Por lo tanto para calcular el value
with ProgressBar1
.value = NumeroArchivoActual * .max / El_Directorio.Files
end with
Sangriento Infierno Lunar!¡.
Cita de: BlackZeroX▓▓▒▒░░ en 28 Junio 2010, 08:42 AM
Cita de: *PsYkE1* en 28 Junio 2010, 03:37 AM
Agregas una ProgressBar y pones esto:
ProgressBar1.Max = El_Directorio.Files
Y dentro del bucle pones:
ProgressBar1.Value = El_Archivo
Salu2! ;)
ProgressBar1.Max = El_Directorio.Files
si El_Directorio.Files es mayor de lo que puede aceptar ProgressBar1.Max va a hacer un OverFlow es mejor una regla de tres xP
Donde:
ProgressBar1.Max = 30000 ' // = Cantidad de Archivos "Dejar 30000" para calcular con regla de tres.
' // Por lo tanto para calcular el value
with ProgressBar1
.value = NumeroArchivoActual * .max / El_Directorio.Files
end with
Sangriento Infierno Lunar!¡.
JAJAJAJJAJA :laugh:
Cierto!!
Se me paso por completo!! :¬¬
Salu2! :P