Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - El Benjo

#191
Ok, intenta llamar a la función dentro del mismo hilo para que la aplicación te bote el error y "a la fuerza" se detenga la ejecución. De esta manera podrás ver por qué la segunda vez que se ejecuta "Results = SR.ReadToEnd" No te funciona.

Estoy viendo otra cosa: No veo en ninguna parte del código que declares la variable Results. Puedes por favor poner cómo la declaras, creo que el error puede estar ahí.
#192
Eso significa que se produce el error en esa línea. Me imagino que la función es creada en un hilo independiente del hilo principal, por eso es que no te salta error sólo sale del bucle y de la función... Y YA!

Para comprobar qué tipo de error es coloca el for dentro del tray/catch y coloca el punto de interrupción en la línea correspondiente al cath (como te indiqué en el código anterior) en la variable "e" estará la información correspondiente al error. Dinos cuál es para ver cómo se puede solucionar.
#193
Modifica el código como sigue:

Código (vbnet) [Seleccionar]
Try
      For Each archivo As String In My.Computer.FileSystem.GetFiles(midirectorio, FileIO.SearchOption.SearchAllSubDirectories, "*.t01")
            nombre = My.Computer.FileSystem.GetName(archivo)
            cmdir = "cd " & midirectorio
            comando = "runpkr00.exe -d " & nombre

            SW.WriteLine(cmdir)
            SW.WriteLine(comando)
            Results = SR.ReadToEnd
            Invoke(Finished)
        Catch e As Exception
        End Try
        Next
        SW.Close()
        SR.Close()
    End Sub


Coloca un punto de interrupción en la línea del catch y fíjate en el error que arroja. Si no arroja ningún error no te queda de otra que colocar el punto de interrupción en la primera línea del bucle e ir ejecutando línea por línea para ver el error.
#194
Estás seguro de que no se ejecuta "runpkr00.exe -d " & nombre por cada archivo? O sólo no te muestra la información en la pantalla?

Para qué es la línea "Invoke(Finished)"?

Has colocado puntos de interrupción en el bucle para comprobar que realmente hace cada iteración que debería?

Si la respuesta a la pregunta anterior es "sí", ¿se ejecuta cada iteración sin problemas o da algún error?
#195
No estoy seguro pero creo que tu problema puede estar en:

Código (vbnet) [Seleccionar]
Invoke(Finished)

Si lo que quieres es que el método se invoke con cada archivo entonces está bien. Pero si lo que quieres es que se invoque al final de todo el procedimiento entonces deberías ponerlo después del "next".

Tampoco creo que haya necesidad de cerrar los streams en cada iteración por lo tanto también deberías provar dejando el código como sigue:

Código (vbnet) [Seleccionar]
Dim SR As System.IO.StreamReader = myprocess.StandardOutput
Dim SW As System.IO.StreamWriter = myprocess.StandardInput
Dim comando As String
Dim cmdir As String
Dim nombre As String
        For Each archivo As String In My.Computer.FileSystem.GetFiles(midirectorio, FileIO.SearchOption.SearchAllSubDirectories, "*.t01")
            nombre = My.Computer.FileSystem.GetName(archivo)
            cmdir = "cd " & midirectorio
            comando = "runpkr00.exe -d " & nombre

            SW.WriteLine(cmdir)
            SW.WriteLine(comando)
            Results = SR.ReadToEnd
            Invoke(Finished)
        Next
        SW.Close()
        SR.Close()
    End Sub


Para dejar más limpio el bucle.
#196
Lex, no conocía la existencia de los métodos para redirigir la salida y la entrada de las aplicaciones.

Rochro, el método que menciona Lex te permite enviar los comandos uno a uno sin necesidad de abrir múltiples ventanas. Esta sería una opción mejor.
#197
Mmmmmm, no sé en qué esté fallando, pero lo más seguro es que sea en la forma en que se construye la cadena.

Intenta poniendo un punto de interrupción y copia toda la cadena como debería salir al final. Luego escribe esa cadena en una consola de comandos y ve si también te da error. si es así entonces no es problema de programación sino de la construcción de la cadena.
#198
Ah, ok, ya te entendí.  :P

Para eso debes poner:

Código (vbnet) [Seleccionar]
Shell("cmd.exe /k" + cmdir + " & " + comando)

El símbolo "&" hasta donde yo sé, se utiliza para separar comandos en la consola de windows. Dinos si te funciona.
#199
Los nombres de los archivos que te devuelve las función que los lista te da la ruta completa del archivo, no solamente el nombre. Puede ser que tu error está ahí. Para resolverlo elimina el directorio raíz del nombre del archivo.
#200
¿Parámetros de uso? ¿Te refieres a los parámetros que se pasan a cada función que trabaja con cadenas?