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
 
Comando "SHELL" No Produce Ningun Resultado
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Comando "SHELL" No Produce Ningun Resultado 
 
Hola a todos y todas.
Estoy utilizando "SHELL" para pasar parametros a una aplicacion "de consola" llamada "convert", que forma parte del paquete "Imagemagick".
"convert" convierte archivos de imagenes entre formatos. Una funcionalidad interesante es que puede convertir ".pdf" en archvos de imagen. Yo lo que quiero hacer es un pequeño programin en gambas al que le pueda "arrastrar-y-soltar" un pdf adentro y lo convierta automáticamente en png.
¿cómo lograr eso? hasta ahora logré leer el "drag.data" con la ruta del .pdf original, poner en una variable publica el ".png" de destino y armar una cadena de texto con todo lo necesario para la conversion. para que se den una idea, este no es el código original, pero es algo así:

strOrigen = Drag.Data
strDestino = strOrigen & ".png"
strConvertir = "convert " & strOrigen & " " & strDestino
SHELL strConvertir
 


Esto en la consola produce un error informando que "la imagen test.pdf no se pudo abrir" (asi se llama el .pdf con el que estoy probando)
Si incluyo "gksu" en la linea de comando, que quedaria asi:

strOrigen = Drag.Data
strDestino = strOrigen & ".png"
strConvertir = "gksu convert " & strOrigen & " " & strDestino
SHELL strConvertir
 


no produce ningun mensaje de error en la consola, pero tampoco convierte el archivo.
¿¿qué puedo hacer para saber por qué no procesa los archivos??

Gracias por su tiempo y su preocupación.
Saludos.

Si procede, por favor indica los siguientes datos:

    Versión del Sistema operativo y de la distribución: Ubuntu precise
    Versión de Gambas: 2
    Entorno de escritorio: Gnome
    Componente gráfico utilizado en el proyecto (gb.gui, gb.gtk, gb.qt): no se (¿cómo lo averiguo?)
 



 
PabloGener - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comando "SHELL" No Produce Ningun Resultado 
 
Hola Pablo

Primero de todo, decirte que me sorprende que aún utilices gambas 2, pues ya está obsoleto y los programas que generes no van a poder correr en otras distribuciones linux más modernas.

Si necesitas información para instalar gambas 3 en tu sistema, puedes hacer una búsqueda en el foro y mirar las entradas más recientes.

Por otro lado, no creo que sea necesario ejecutar "convert" como superusuario mediante gksu, porque los ficheros a convertir deberían estar en la carpeta de usuario y no en alguna ruta del sistema. Dicho esto, lo que te está ocurriendo es que la cadena resultante que le pasas al comando SHELL contiene seguramente espacios y/o caracteres que necesitan ser escapados para que funcione. Por ejemplo, una ruta que contenga espacios debe ser entrecomillada, una barra invertida "\" necesita escaparse con otra barra delante y así para ciertos caracteres especiales, como las propias comillas.

Si muestras la cadena resultante que le pasas a SHELL, (strConvertir)  podremos ver dónde se encuentra el error. En ciertos casos, es preferible usar el comando EXEC que acepta el ejecutable y sus parámetros como un array de strings.

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: Comando "SHELL" No Produce Ningun Resultado 
 
Pablo coloca un punto de interrupción al comienzo de strOrigen.

Usa la tecla F9 para ello.

Ahora ejecuta el programa con F5. Ve paso a paso con la tecla F8, (una vez que llegas al punto de interrupción).
Intenta ver el contenido de la variables colocando el puntero del ratón sobre la variable u objeto en concreto,
incluido Drag.data, si coincide con lo que tu quieres. Si hay una variable
que no tiene contenido, si la ruta no es completa,etc,etc.

Otro motivo puede ser que no encuentre la ruta.

Si sabes cual es la cadena total que se forma para crear la instrucción del Shell, copia y pegala en la linea de comandos de
una venta de Shell de Linux. Ejecutala para comprobar si te funciona.

Y al igual que dice Jesús, tienes que actualizarte la versión de gambas a la versión 3.
¿ Qué versión de Linux usas ?.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comando "SHELL" No Produce Ningun Resultado 
 
Pablo en mi humilde opinión siempre que uso sentencias sql, shell o exec uso un print  para no errarle en la sintaxis o ver si alguna variable produce el error

strConvertir = "gksu convert " & strOrigen & " " & strDestino
print strConvertir
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comando "SHELL" No Produce Ningun Resultado 
 
A ver, les explico:
primero estoy usando "Ubuntu 'precise' 12.04" como lo dije en el OP
segundo, estoy usando gambas2 porque funciona bien y cuando intenté actualizar a
gambas3 synaptic tiró error de dependencias, cosa que tendré que chequear cómo
solucionar el día que quiera hacer algo con gambas que sólo se pueda hacer con
la versión 3. por ahora, "si no está roto, no lo arregles", es una frase que siempre sigo.

bien, les pego el código fuente de mi programín para que vean cómo logro llegar a la string
que le paso como argumento a "SHELL":

PUBLIC SUB lblOrigen_Drop()

  DIM tmpPuntoExtension AS Long
  DIM tmpCheckExtension AS String
  
  
  pthOrigen = Right(Drag.Data, Len(Drag.data) - 8)
    pthOrigen = Trim(pthOrigen)
  lblOrigen.text = pthOrigen
  tmpPuntoExtension = InStr(pthOrigen, ".")
  tmpCheckExtension = Right(pthOrigen, Len(pthOrigen) - tmpPuntoExtension)
    tmpCheckExtension = Trim(tmpCheckExtension)
  IF LCase(tmpCheckExtension) <> "pdf" THEN GOTO tagSalida
    'Message(tmpCheckExtension)
  
'  Message("Ubicacion del punto antes de la extension:" & tmpPuntoExtension)
'  pthDestino = Left(pthRutaArchivo, tmpPuntoExtension) & "jpg"
    lblOrigen.text = pthOrigen
    pthDestino = Left(pthOrigen, Len(pthOrigen) - 3) & "png"
    
'  Message("pthDestino:" & pthDestino)
    cmdCancel.Visible = TRUE
    intCountdown = 3
    cmdCancel.text = "Cancelar (" & intCountdown & ")"
    tmrCountdown.Enabled = TRUE
    
  
tagSalida:

  

END

PUBLIC SUB tmrCountdown_Timer()
    DIM strLineaShell AS String
    
  intCountdown = intCountdown - 1
  IF intCountdown > 0 THEN
        cmdCancel.text = "Cancelar (" & intCountdown & ")"
  ELSE
        strLineaShell = "convert " & pthOrigen & " " & pthDestino
        PRINT strLineaShell
        
        SHELL strLineaShell
        
        'Message(strLineaShell)
        cmdAbrir.Enabled = TRUE
        tmrCountdown.Enabled = FALSE
        cmdCancel.Visible = FALSE
        lblOrigen.text = ""
        'aca va si el check esta tildado que se borre el original
        
  ENDIF
  
  

END

PUBLIC SUB cmdCancel_Click()

  tmrCountdown.Enabled = FALSE
  

END
 


Como verán luego que el usuario suelta un .pdf se valida y se pasa a encender el timer.
El timer luego de 3 segundos llama a SHELL.
Si el usuario, antes de esos 3 segundos hace click en 'Cancelar' se detiene todo y se deja sin efecto.
El código por ahora es un desastre de organización y prolijidad, por eso no lo había pegado antes!!! lo que pasa
es que la IDE todavía no la conozco bien y estoy aprendiendo a usarla, tengo problemas con el indentado y esas cosas.
van a ver también que comenté lineas en donde llamaba a "Message()" para ir debuggeando el contenido de las variables
cosa que los programadores de VB suelen hacer bastante más seguido que interrumpir la ejecución en cierto punto.
son costumbres...

les pego también lo que aparece en consola después que se ejecuta el "PRINT":

convert home/alumno/test/test.pdf home/alumno/test/test.png
 


como verán la línea producida no contiene espacios ni nada extraño.
si navego por consola hasta la carpeta 'test' y ejecuto 'convert' yo mismo todo marcha
de maravillas y se produce el bendito .pdf sin problemas.
así que sólo resta saber por que diablos el comando SHELL no funciona bien.
espero que puedan ayudarme!!
gracias a todos por sus respuestas!
 



 
PabloGener - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comando "SHELL" No Produce Ningun Resultado 
 
Pienso que al Shell le tienes que dar un comando y no una acción que haz dado a unavariable o sea tendrias que poner el comando que ejecutas en terminal en esa propriedad o función, no se si shell es propriedad o función, soy novato , pero creo que si es eso el comando asignado al shell.

Citar:
SHELL strLineaShell

 



 
portaro - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comando "SHELL" No Produce Ningun Resultado 
 
portaro escribió: [Ver mensaje]
Pienso que al Shell le tienes que dar un comando y no una acción que haz dado a unavariable o sea tendrias que poner el comando que ejecutas en terminal en esa propriedad o función, no se si shell es propriedad o función, soy novato , pero creo que si es eso el comando asignado al shell.

Citar:
SHELL strLineaShell


portaro, si no te entendí mal lo que vos decís es que no puedo pasar una variable como argumento a SHELL... que la única forma de utilizar SHELL correctamente es pasándole ('entre comillas') un parámetro 'hard-codeado'.
No estoy seguro de que tengas razón, y tampoco me parecería muy lógico implementar un recurso como SHELL de esa manera. en todo caso, si fuera como vos decís, el que hizo el lenguaje gambas no se en qué estaba pensando cuando armó el comando SHELL para que no acepte parámetros programáticos pasados con variables... cómo puedo adivinar qué archivo me va a pasar el usuario para convertir?? o en todo caso podría exigir a mis usuarios que renombren sus .pdfs a un nombre pre-definido en el código de mi programa para que SIEMPRE funcione con ese nombre... una verdadera locura que haría que el programa quede obsoleto antes del primer uso.
es IMPERATIVO que el comando SHELL tome los parámetros programáticamente a partir de VARIABLES, justamente porque los datos que se le pasarán serán VARIABLES, irán variando con cada vez que se use el programa. NO PUEDO poner "entre comillas" un valor pre-determinado para pasarle a SHELL porque haría que el programa funcione sólo para ese valor. no se si se entiende...
gracias por el tiempo que tanta gente se está tomando para tratar de ayudarme a solucionar esto!! gracias a todos!
saludos.
 



 
PabloGener - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comando "SHELL" No Produce Ningun Resultado 
 
Tienes que esperar un poco para que los que entienden más que yo te den alguna ayuda que te pueda solventar tu problema.

Yo estoy aprendiendo y aún n ose mucho del gambas.

Pero todos los ejemplos que yo ya hice o vi llevan shell con el uso de algun comando en su sintaxis por ejemplo -

http://foro.gambas-es.org/viewtopic...t=comando+shell

Ahora bien secadra funciona solo con las variables mencionadas eso ya no se.

Disculpas si te he aburrido.
 



 
portaro - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comando "SHELL" No Produce Ningun Resultado 
 
portaro escribió: [Ver mensaje]
Tienes que esperar un poco para que los que entienden más que yo te den alguna ayuda que te pueda solventar tu problema.

Yo estoy aprendiendo y aún n ose mucho del gambas.

Pero todos los ejemplos que yo ya hice o vi llevan shell con el uso de algun comando en su sintaxis por ejemplo -

http://foro.gambas-es.org/viewtopic...t=comando+shell

Ahora bien secadra funciona solo con las variables mencionadas eso ya no se.

Disculpas si te he aburrido.


querido amigo portaro, no me aburres para nada. tal vez de tus dudas y las mias aprendamos algo!! esto que vos decias, que SHELL no acepta variables como parametros. o sea que solo se puede usar asi:

Citar:

SHELL "micomando home/test/miarchivo.pdf"


y nunca asi:

Citar:

miVariable = "micomando " & miarchivoenvariable
SHELL miVariable


si vos tenes razón, me parce una pésima forma de implementar el comando SHELL, pero puede ser que así sea... no lo sé. no veo que en la documentación del lenguaje esté especificado que no se pueden pasar variables como argumento del comando. tampoco dice que sí las acepta, con lo cual no sé bien qué pensar.
en fin. estamos los dos a la espera de alguien más experimentado con el comando SHELL que nos muesetre la luz.
abrazo, y gracias portaro!!
 



 
PabloGener - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comando "SHELL" No Produce Ningun Resultado 
 
Pablo:

Por casualidad.

convert home/alumno/test/test.pdf home/alumno/test/test.png
 


Esa linea no te funciona, no ?.
No puedes olvidar la barra del comienzo a la izquierda de home.

convert /home/alumno/test/test.pdf /home/alumno/test/test.png
 


Pruébala de esa forma.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - 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 Un Detalle Con El Insert Into Gambas Value... jousseph Bases de Datos 5 Domingo, 04 Noviembre 2012, 20:58 Ver último mensaje
Shell
No hay nuevos mensajes Capturar Salida Comando "udp-sender&q... gambas yacker General 4 Viernes, 19 Abril 2013, 09:39 Ver último mensaje
shordi
No hay nuevos mensajes Obtener Numeros Casuales Desde Los File-de... vuott Aplicaciones/Fragmentos de Código 1 Sabado, 31 Octobre 2015, 20:27 Ver último mensaje
shordi
No hay nuevos mensajes Ejecutar Archivos Audio MP3 Con La Clase &... vuott Aplicaciones/Fragmentos de Código 5 Lunes, 02 Diciembre 2019, 13:28 Ver último mensaje
tincho
 

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