Este es un caro ejemplo de ello:
A continuación os comento una nueva mejora del programa "Convertidor .ogv a .avi", ha sido realizado por razaAztk un miembro del foro gambas-es.org.
Se trata de poner una barra que indique el estado de la conversión, algo muy útil para saber cuanto tiempo le queda para terminar la conversión.
Comentaré un poco como lo ha conseguido hacer:
Ha creado un proceso de la siguiente manera: hproc = EXEC ["mencoder", TextBoxentrada.text, "-ovc", "xvid", "-oac", "mp3lame", "-xvidencopts", "pass=1", "-o", TextBoxsalida.text] FOR READ AS "Mencorder"Asi cada vez que proceso manda algo a la salida standard, se lanza el evento Mencorder_Read()
Y con esta subrutina, lee cada vez que se produce una salida en la terminal:
PUBLIC SUB Mencorder_Read()
DIM sLine AS String
DIM sCad AS String[]
DIM vx AS Float
READ #LAST, sLine, -50
'PRINT sLine
sLine = Trim(sLine)
IF sLine LIKE "*[0-9]*%*" THEN
sCad = Split(sLine, " ", "'", TRUE)
TRY vx = Val(Replace$(Replace$(Replace$(sCad[3], "%", ""), "(", ""), ")", "")) / 100
IF vx > 0 THEN
pb.Value = vx
ENDIF
ENDIF
END
Y va analizando la salida que genera el EXEC en la terminal ( READ #LAST, sLine, -50 ). leemos unos cuantos caracteres (en este caso 50)
Cada línea lanza el evento Read, las lineas que nos interesa para la progress bar son las del tipo:
Asi cuando encuentra algún numero con porcentaje en la linea que esta analizando ( IF sLine LIKE "*[0-9]*%*" THEN ).
vx = Val(Replace$(Replace$(Replace$(sCad[3], "%", ""), "(", ""), ")", "")) / 100y tomamos el campo 4 ( sCad[3] (recordemos que los arrays empiezan por 0, por eso no es 4), que es el (84%). Quitamos los caracteres sobrantes (%) y lo pasamos a numero.
Este número lo pasa a pb.value (a la progress bar ), y asi va mostrando como se esta desarrollando el proceso.
Este código es muy útil ya que saber la salida en la terminal que genera un comando ejecutado por la orden EXEC, puede ser fundamental para la buena ejecución de nuestro programa.
Imaginaos por ejemplo que no este instalado mencoder en nuestro ordenador, podemos avisar al usuario que tiene que "hemos detectado que mencoder no esta instalado"... algo que sin lugar a dudas nos será muy útil.
Enlaces de descarga:
http://proyectojulio.googlecode.com/files/ogvavi-0.0.2.tar.gz
http://proyectojulio.googlecode.com/files/ogvavi_0.0.2.deb
Saludos y gracias por cooperar con tus conocimientos en este proyecto razaAztk
Julio Sánchez