Gambas-it

Gambas3 => Programmazione => Topic aperto da: doublemm - 12 Ottobre 2015, 19:10:14

Titolo: aperturta evince da comando SHELL
Inserito da: doublemm - 12 Ottobre 2015, 19:10:14
Buonasera a tutti, da un po di tempo gambas con il seguente comando

Codice: [Seleziona]
stampa = Shell "evince " & "'" & Application.Path & "/ciao.pdf" & "'"

non apre più evince

se apro evince da terminale si apre regolarmente, se provo ad aprire con SHELL un altro software si apre tranquillamente.
Siccome non succede nulla nemmeno un messaggio di errore, secondo voi da cosa può dipendere?

Grazie a tutti.
Titolo: Re:aperturta evince da comando SHELL
Inserito da: kicco - 12 Ottobre 2015, 19:21:04
Citazione
non apre più evince
a me funziona perfettamente!  :-\
Titolo: Re:aperturta evince da comando SHELL
Inserito da: vuott - 12 Ottobre 2015, 21:16:20
Anche a me funziona.
Titolo: Re:aperturta evince da comando SHELL
Inserito da: Gianluigi - 13 Ottobre 2015, 11:12:36
Anche a me funziona, scusa la domanda scema: Non è che magari si apre e si nasconde, nel senso che non si porta in primo piano e/o magari si riduce a icona?
 :ciao:
Titolo: Re:aperturta evince da comando SHELL
Inserito da: sotema - 14 Ottobre 2015, 20:46:48
Anche a me funziona.
Curiosità perchè non usi il componente gb.desktop? Desktop.Open("percorso del file")
Titolo: Re:aperturta evince da comando SHELL
Inserito da: kicco - 15 Ottobre 2015, 19:11:32
Stavo considerando la differenza tra il comando SHELL impiegato da doublemm
Codice: gambas [Seleziona]
Shell "evince " & "'" & Application.Path & "/ciao.pdf" & "'"

e il comando EXEC
Codice: gambas [Seleziona]
Exec ["evince", ("'" & Application.Path & "/ciao.pdf" & "'")]

ATTENZIONE: che quest'ultimo non funziona perchè sembrerebbe che il comando EXEC punti già di per se nella cartella /home/nomeutente e quindi io ho una ripetizione di una parte della path con la conseguente indiponibilità del file da aprire.
1 Come si risolve l'inghippo?
2 Che differenza c'è nell'impiegare SHELL o EXEC?
Fido nella vostra benevolenza :)   
 :ciao:
Titolo: Re:aperturta evince da comando SHELL
Inserito da: vuott - 15 Ottobre 2015, 22:48:04
....e il comando EXEC
Codice: gambas [Seleziona]
Exec ["evince", ("'" & Application.Path & "/ciao.pdf" & "'")]

Ho inserito un file pdf nella cartella del progetto, poi per farlo funzionare ho dovuto eliminare i due apici dalla riga di comando di Exec.
Titolo: Re:aperturta evince da comando SHELL
Inserito da: kicco - 16 Ottobre 2015, 13:10:15
 :ok:
Citazione
...ho dovuto eliminare i due apici dalla riga di comando di Exec.
Grazie Vuott!
 :ciao:
Titolo: Re:aperturta evince da comando SHELL
Inserito da: vuott - 16 Ottobre 2015, 13:44:51
Ad ogni modo - salvo altre necessità legate alla gestione con le risorse della Classe Process - sostengo il suggerimento di sotema di utilizzare il metodo Desktop.Open() dei componenti gb.desktop e gb.desktop.x11
Titolo: Re:aperturta evince da comando SHELL
Inserito da: Golia - 16 Ottobre 2015, 14:31:42
io per aprire i file pdf (o anche altri formati) faccio così

Desktop.Open("mio file")
Titolo: Re:aperturta evince da comando SHELL
Inserito da: vuott - 16 Ottobre 2015, 15:25:24
...se poi uno sta proprio disperato, può tornare alle fonti...    :D


Esempio pratico:

Codice: [Seleziona]
Library "libc:6"

' int execv (const char *__path, char *const __argv[])
' Execute PATH with arguments ARGV and environment from `environ'.
Private Extern execv(path As String, argv As String[]) as Integer

Public Sub Main()

   execv(System.Find("evince"), [" ", "http://www.midi.org/aboutmidi/intromidi.pdf"])

End
Titolo: Re:aperturta evince da comando SHELL
Inserito da: kicco - 16 Ottobre 2015, 16:18:13
Prendo atto del saggio suggerimento!

Io ho  usato l'esempio del post solo per cercare di capire la differenza tra il comando SHELL ed EXEC (che non ho ancora capito o quasi!) :)
 :ciao:
Titolo: Re:aperturta evince da comando SHELL
Inserito da: doublemm - 18 Ottobre 2015, 09:39:49
Buongiorno, nel mio caso deve essere solo un problema di sistema operativo perchè lo stesso programma in altri pc fa il suo dovere perfettamente.