Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Comprobar Existencia De Comando Antes De Ejecutarlo En El Objeto.
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Comprobar Existencia De Comando Antes De Ejecutarlo En El Objeto. 
 
Public Sub Button3_Click()
Dim cpu As String
     Shell "dpkg -l hwloc" To cpu
TextArea1.Text = cpu

End
 


Tengo este codigo hecho pero lo veo no muy bien por si libero el programa y despues alguien no tiene el mismo comando que Shell ejecuta instalado en su sistema ese pc y me gustaria que antes de que ejecute el comando  hiciera una comprobación de que el comando existe y en caso de no imprimiera en la textarea la info para hacerlo en Ubuntu, intente hacerlo con IF THEN  Endif pero no he sido quien de lograr recoger la salida del comando en términos de dpkg -l o grep con Shell. Ademas supongo que una vez más estaré haciendo todo mal como siempre que soy muy manco en esto.  

Public Sub Button3_Click()

Dim cpu As String
Shell "lstopo" To cpu
     If cpu = False
     Else  
     Shell "dpkg -l hwloc" To cpu
     TextArea1.Text = cpu
     Endif


End
 



Tb intente esto →
Dim cpu, vta As String
Shell "lstopo" To cpu
TextArea1.Text = cpu

     If cpu = False Then      
     Shell "dpkg -l hwloc" To vta
     TextArea1.Text = vta
     Endif


End
 


Y esto otro

Public Sub Button3_Click()
Dim cpu, vta As String
Shell "lstopo" To cpu


     If cpu = False Then
     Shell "dpkg -l lstopo" To vta
     TextArea1.Text = vta
     Endif


End
 



Saludos y a ver si me aclarais.

End
 



 
portaro - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprobar Existencia De Comando Antes De Ejecutarlo En El Objeto. 
 
Podria funcionar el evento.read evento?

Pues me respondo yo mismo: no, ya que no veo ningún evento read .
 



 
última edición por portaro el Jueves, 07 Diciembre 2017, 17:18; editado 1 vez 
portaro - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprobar Existencia De Comando Antes De Ejecutarlo En El Objeto. 
 
Portaro:

¿y si pruebas con el comando  which?
Algo asi como...
' gambas class file

Public Sub Form_Open()

  Dim salida As String
  Dim comando As String

  comando = "ls"

  Shell "which " & comando To salida

  If salida = "" Then
    Print "El comando no esta instalado en este equipo"
  Else
    Print "Conmando esta en...", salida
    'ejecuto el comando...
    'Shell comando
  Endif

End

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprobar Existencia De Comando Antes De Ejecutarlo En El Objeto. 
 
Entendi el concepto Jsbsan.

Pero tengo una duda en esta linea

If salida = "" Then
 


El "" sin nada entre las comillas en gambas toma por definicion lo anterior o sea busca la salida de which porque sea ha especificado antes (la ultima vez del codigo ) o es la expresion para retornar algo de un comando externo por definicion en gambas?

Gracias por ayudarme , luego que pueda continuar el programa adaptare tu código. Es fundamental escribir algo para entender algo de el.

 
 



 
portaro - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprobar Existencia De Comando Antes De Ejecutarlo En El Objeto. 
 
Portaro:

Te explico el codigo y los valores que va tomando la variable string salida cuando se va ejecutando el programa:

1) Dim salida As String
Define que "salida" es una variable tipo cadena "string", y su valor es vacio (osea igual a "")

2) Shell "which " & comando To salida
Lo que se obtenga del comando which, se lo asigna a la variable "salida"
Si no se genera nada, el comando salida, queda vacia ("")

3) If salida = "" Then
Hace una comprobación: Si la variable vacia es igual a vacia ("") entonces hace (3.1)

3.1) Print "El comando no esta instalado en este equipo"
escribe en pantalla "El comando no esta instalado en este equipo")

3.2) Else  Print "Conmando esta en...", salida
Sino, escribe en pantalla "comando esta en ..." y el valor de la variable "salida"


Recuerda que:
 if (true) then (something 1) else (something 2)
hace la sigue comprobacion "Si verdad Entonces hace algo1 sino hace algo2"

If :  used to say that something will happen only in the case that something else happens or is true
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprobar Existencia De Comando Antes De Ejecutarlo En El Objeto. 
 
jsbsan escribió: [Ver mensaje]


3) If salida = "" Then
Hace una comprobación: Si la variable vacia es igual a vacia ("") entonces hace (3.1)


Es más elegante y comprensible la forma de negación:

If Not salida Then


salida sólo tiene valor cuando se ha asignado una cadena, de lo contrario equivale a nada.

Del mismo modo, se pueden ahorrar comparaciones y bifurcaciones en los condicionales. Si salida tiene un valor, es que el comando existe y se ejecuta, por lo tanto sólo hace falta una comprobación para indicar que no existe. Yo lo hubiera hecho así:

' gambas class file

Public Function ExisteComando(cmd as String) as Boolean

Shell "which " & cmd To salida

If Not salida Then Return False

Return

End



Uso de la función:


If ExisteComando("ls") Then
    Shell "ls . "
Else
    Print "No se encuentra el comando"
Endif



Ya sé que cuando se usa el código hay que usar la cláusula Else para informar al usuario, pero la función y el código resultante me parece más limpio y conciso  

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprobar Existencia De Comando Antes De Ejecutarlo En El Objeto. 
 
Gracias por las contestaciones  me ha quitado unas cuantas dudas lo que me habeis escrito.
Y ya estoy poniendo codigo en el programa .

Necesitaria eso si que alguien me traduzca el como poner el print a textarea porque no termino de entenderlo o no le veo la manera .
La cosa es que en modo terminal me se mover ya bien pero los objectos y clases no domino mucho no se como traducir el print por modo a que textarea haga lo mismo que esta en la simplicidad del print - salida - resultado.

Saludos y mil gracias.
 



 
última edición por portaro el Lunes, 18 Diciembre 2017, 16:35; editado 1 vez 
portaro - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprobar Existencia De Comando Antes De Ejecutarlo En El Objeto. 
 
Citar:
Necesitaria eso si que alguien me traduzca el como poner el print a textarea porque no termino de entenderlo o no le veo la manera .


No hay que poner el print en ningún sitio. Olvídate del Print.

Para que un textarea muestre un texto sólo tienes que asignar ese valor en la propiedad Text del textArea.
Así:
miTextArea.Text = "Este es el texto que vamos a mostrar"


Por otra parte
El comando Shell envía la salida normal del sistema a una variable con la clausula TO. Así:


Dim misArchivos as string

Shell "ls " & user.home to misArchivos


deja el resultado del comando ls en la variable misArchivos. Después sólo tienes que pasar el valor al textarea así:

Dim misArchivos as string

Shell "ls " & user.home to misArchivos
miTextArea.Text=misArchivos
wait 0.01 'El wait hace una llamada al bucle de eventos y refresca la pantalla con lo que se muestra el nuevo valor del textArea.
 

 
También puedes intentar asignar directamente la salida del Shell a la propiedad text del TextArea. Así:


Shell "ls " & user.home to miTextArea.Text wait 'aquí el wait detiene la ejecución hasta que finalice el comando Shell

 


Saludos.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprobar Existencia De Comando Antes De Ejecutarlo En El Objeto. 
 
Gracias por ayudarme pero como me vuelvo loco con la sintaxis tengo dudas en muchas cosas por ejemplo

Shell "ls " & user.home


Porque se usa eso ? es un lugar temporal para guardar la variable?

Muchas gracias.
 



 
portaro - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprobar Existencia De Comando Antes De Ejecutarlo En El Objeto. 
 
portaro:

Citar:
Shell "ls " & user.home

Porque se usa eso ? es un lugar temporal para guardar la variable?

No, no es un un lugar temporal para guardar la variable.
Es la ruta del usuario, por ejemplo /home/usuario, /home/portaro, /home/julio, etc..

Es como si escribieras en la consola:
$ls /home/portaro

http://gambaswiki.org/wiki/comp/gb/user/home


Citar:
.... to miTextArea.Text

Hay le indicas al comando Shell donde quieres que vaya lo que se obtiene, en este caso, hacia el textArea "miTextAres", y la guardas en la propiedad .text del textArea.
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Como Saber La Existencia De Un Archivo aristicol General 3 Viernes, 18 Junio 2010, 12:14 Ver último mensaje
AnSnarkista
No hay nuevos mensajes Comprobar La Existencia De Un Archivo En I... 4octavio4 General 6 Miercoles, 16 Marzo 2011, 12:47 Ver último mensaje
4octavio4
No hay nuevos mensajes Ejecutar Un Programa De Gambas Con Determi... jousseph Controles/Librerías/Componentes 7 Jueves, 10 Septiembre 2015, 22:03 Ver último mensaje
jousseph
No hay nuevos mensajes Duda Con Wttr.in En Comando Terminal Y Ese... portaro Shell Scripting 7 Domingo, 05 Enero 2020, 18:20 Ver último mensaje
portaro
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron