Página 1 de 1

Pausar con bucle.

Publicado: 13 Dic 2012 00:00
por Daniel_Lechu
Hola buenas, me gustaría a ver si me podíais ayudar con este problema que tengo.
Tengo un programa que quiero que extraiga un archivo, 7-Zip a una carpeta con una barra de progreso.
No he sido capaz de encontrar la forma de hacer que lo haga diréctamente con el AMS, por lo que estaba haciendo un programa que cada cierto tiempo compruebe el tamaño de esa carpeta actualizando una barra de progreso.
He probado a hacerlo con el "Shell.Execute" y poniendo a que espere a terminar la extracción para continuar la ejecución, pero claro, eso congela el programa y no funciona la barra de progreso.
También he probado a ejecutarlo sin que espere, y poner un bucle con una función que compruebe si el programa se está ejecutando, pero me he encontrado con estos problemas:

Si pongo:
while unzipcheck() == true do
Application.Sleep(10000);
end

El programa funciona bien, pero el programa ocupa un 50% de la CPU (para un ordenador de un núcleo sería el 100%) sólo en hacer el sleep.

Si pongo:
while unzipcheck() == true do
end

El programa se queda congelado, y sólo reacciona cuando termina la extracción, con lo que la barra de progreso no se mueve.

Quería a ver si me podíais aconsejar alguna forma de extraer el archivo con barra de progreso o alguna alternativa de bucle que no sea un ocupa-CPU's, ni congele la aplicación...

PDTA: No me sirve poner el script de actualización de la barra de progreso en el bucle, ya que es pesado y ralentizaría mucho la extracción...
También decir, que para mi es importante que sea 7-Zip el archivo comprimido, ya que con la compresión que me ofrece puedo meter dos instalaciones de 6GB y 5.6GB en 3.35GB. Si lo hago en ZIP, ZIP 2.0 o RAR, que son los que conozco plugins para descomprimir con barra de progreso, el tamaño hace que crezca a más de 4.2GB y no me entra en un DVD.

Un saludo y muchas gracias.

Re: Pausar con bucle.

Publicado: 13 Dic 2012 01:49
por abood1987
Hi Daniel_Lechu

How are you ?

I hope I can help you by this apz file ;)

HIDE: ON
Hidebb Message Hidden Description


greetings

Re: Pausar con bucle.

Publicado: 13 Dic 2012 03:46
por rafaxplayer
application sleep  muy malo

Re: Pausar con bucle.

Publicado: 13 Dic 2012 09:10
por Daniel_Lechu
abood1987 escribió:Hi Daniel_Lechu

How are you ?

I hope I can help you by this apz file ;)

HIDE: ON
Hidebb Message Hidden Description


greetings

Thanks for reply, but this is for Zip and i need for 7-zip, because the space is limited and with 7-zip i get a file with a size of 50% of the zip file (3.6GB vs 1.75GB).

I'm trying with RAR again, because i have a plugin that extract rar files with progress, and i think that the size was about 4.25GB (a DVD have 4.37GB), and maybe i can do it. The difference is of about 1GB from RAR to 7-Zip, but if necessary i have to do.

Greetings ;)

Y si, no se como un script para pausar puede ser tan cutre y ocupar la CPU, si hasta el sleep de microsoft funciona mejor (y eso es grave jejeje).

Re: Pausar con bucle.

Publicado: 13 Dic 2012 20:50
por mecivic
take a look

Re: Pausar con bucle.

Publicado: 13 Dic 2012 20:57
por abood1987
ok what about zipex ?

Re: Pausar con bucle.

Publicado: 13 Dic 2012 21:12
por Daniel_Lechu
abood1987 escribió:ok what about zipex ?
ZipEx is a good plugin but, i've seen that progress is file by file, instead the whole file, and with big files (like the one that i've) the program freezes for a while... I've tried with RAR.

Finaly i've seen a page, with a sfx module for 7-zip, and i can make a self extract setup program with progress bar, and when the install program finish, then the sfx module delete the temp folder.

thanks for help ;)

Re: Pausar con bucle.

Publicado: 19 Mar 2013 03:11
por sarumanice
Gracias

Publicado: 20 Sep 2013 03:14
por a.miguel
Interesante :yes:

Re: Pausar con bucle.

Publicado: 20 Sep 2013 03:35
por Metafunken
rafaxplayer escribió:application sleep  muy malo
Bastante cierto, es mejor el timer aunque en varios casos es necesario el jodido bucle del ams, pero mas vale usarlo con un Application.Sleep(1) para que la aplicacion no deje de responder cuando se usa una informacion muy extensa, aun asi se jode por completo pues el usuario no puede interactuar mientras el bucle hace lo suyo... Insisto, mejor timer si es posible.

Saludos ;)

Re: Pausar con bucle.

Publicado: 07 Mar 2014 13:30
por s4real1
abood1987 :- will check it out thanks

Publicado: 08 Mar 2014 16:53
por tam
thanks

Re: Pausar con bucle.

Publicado: 19 Ene 2015 14:30
por samirmax
thanks

Re: Pausar con bucle.

Publicado: 12 Dic 2015 14:36
por dripro
graças

Re: Pausar con bucle.

Publicado: 23 May 2016 18:07
por GEORGEFTR
:pc: :pc: :pc:

Re: Pausar con bucle.

Publicado: 28 Ene 2021 16:12
por lazkopat
thank you