Try Shell, Try Exec


Objetivo: Try Shell, Try Exec
Buenas!.

Probando Try con Shell, no me devolvía un error aposta.

Por ejemplo, no puedo hacer esto:

Try Shell "mameu -listclones" To contenido
If Error Then contenido = File.Load(Application.Path & "/listadeclonesMAME.txt")


Debo hacer:

Try Exec ["mameu", "-listclones"] To contenido
If Error Then contenido = File.Load(Application.Path & "/listadeclonesMAME.txt")


El error es producido a "drede" ya que el verdadero nombre del comando es mame.
Lo he cargado desde el propio directorio de la aplicación "temporalmente".
No me interesa copiar, sobre todo si es algo que tengo que probar y subirlo a vosotros por si tengo alguna duda.

Supongo que no hay otra forma de comprobar si disponemos del comando en el sistema.
En mi caso yo lo tengo, pero si subo el ejemplo a la comunidad, lo subo con el archivo de texto que contiene todos los clones.

Saludos

Objetivo: Re: Try Shell, Try Exec
No entiendo nada

Perfil MP  
Objetivo: Re: Try Shell, Try Exec
Shordi:

Pues que en el caso de Try Shell. Estoy probando a intentar a ejecutar un comando que no existe en el sistema para que de error y
se ejecute la linea siguiente: If Error...pero no lo hace

En cambio si ejecuto Try Exec, gambas se da cuenta de que se produce un error y va correctamente a lo que dice If Error que haga.

Entonces, la pregunta es. ¿ Por qué le ocurre eso con Try Shell ?.

¿ Debí declarar la instrucción con Shell con una variable de tipo proceso ?.

Es fácil de probar son dos lineas. Podrías probar:

Try Shell comandonoexiste
If Error Then Print "Ese comando no existe en el sistema!"


Saludos

Objetivo: Re: Try Shell, Try Exec
Citar:
Entonces, la pregunta es. ¿ Por qué le ocurre eso con Try Shell ?.


Pues porque cuando usas Shell lo que haces es abrir una shell con su entorno de ejecución propio dentro de la cual se lanza el comando que le pases. La salida estandar del sistema y la salida de errores son los propios de la shell que lanzas, no de la shell que está lanzando tu programa. Es decir: No puede haber error en tu salida de errores porque la shell se ha ejecutado correctamente (otra cosa es que dentro de ella haya un error)

Exec, por el contrario no funciona así, lanza el comando dentro de tu propia shell y es más simple (y ràpido)

That's why my friend...

Perfil MP  
Objetivo: Re: Try Shell, Try Exec
Ajaaa..

Pues para estas cosas parece mejor usar Exec. Ya ves, yo que soy siempre más de usar Shell que Exec. Y no es por publicidad ni nada de eso.

Saludos.

Objetivo: Re: Try Shell, Try Exec
Citar:
Pues para estas cosas parece mejor usar Exec.


La diferencia es el entorno de ejecución, con Shell dispones de toda la potencia del entorno: variables del sistema, paths, etc. con Exec, puede ser más complicado según qué quieras hacer.
Como norma general:
-Para comandos simples Exec
-Para cosas más complejas Shell

Saludos

Perfil MP  
Objetivo: Re: Try Shell, Try Exec
Y si usas shell, puedes declarar un proceso en gambas para leer la salida estándar y/o la de errores y actuar en consecuencia.

Saludos

Perfil MP  
Objetivo: Re: Try Shell, Try Exec
Probare a hacer algo con procesos y Shell a ver que hace con la salida de errores.
Lo cierto es que en el manual de gambas trata mas Exec que Shell.

Aunque los califica de muy parecidos.

Saludos


Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1244s (PHP: -31% SQL: 131%)
Consultas SQL: 22 - Debug off - GZIP Activado