Gambas France BETA


Pas de compte ? Incription

[Résolu] Lancer une application depuis Gambas

Ce sujet est résolu.

12
AuteurMessages
Foromus#1 Posté le 17/1/2011 à 14:20:00
Bonjour à tous,

Je suppose que le sujet a déjà été abordé, mais je ne vois pas où.

J'aimerais, depuis mon appli en Gambas, pouvoir ouvrir un fichier.txt ou un fichier.pdf, et ce avec l'application par défaut de mon SE, Lynx Lucide en l'occurrence. Avec VB, je savais faire - j'utilisais la commande Shell, avec Gambas, je ne trouve pas.
Pour l'instant, j'aimerais me limiter à ces deux extensions.

Merci pour votre aide.
spheris#2 Posté le 17/1/2011 à 15:13:00
Foromus,
Il existe SHELL ou EXEC dans GB :

http://gambaslinux.eg2.fr/articles.php?lng=fr&pg=49

et

http://gambasdoc.org/help/lang/shell?fr

A+
;) ;)
Foromus#3 Posté le 17/1/2011 à 16:17:00
Bon, encore une fois, je n'ai pas tout compris...

Je vais faire différents essais pour voir ce qui se passe, et ... ce qui ne se passe pas...

Si je fais :

Shell Read Chemin & "/Monfichier.txt" As Process

ça va me donner quoi ?..
linuxos#4 Posté le 17/1/2011 à 18:21:00
Un peu de sel, de poivre et la crevette sera... Il faut plutôt faire comme cela:

Pour un execution pontuelle dans ton programme:


1
DIM ResultatCmd AS STRINGTRY SHELL "commande_a_executer <fichier pdf> 2>&1" TO ResultatCmdIF ERROR THEN PRINT "Une erreur s'est produite lors de l'execution de la commande" PRINT "Message: " & Error.TextEND IFPRINT "Resultat de la commande: " & ResultatCmd



Pour executer un commande avec SHELL ou EXEC au travers d'un process c'est plus compliqué.
Demande si tu as besoin d'un exemple.

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
Foromus#5 Posté le 18/1/2011 à 13:45:00
Bonjour,

Bon, je patauge encore un coup !

Voilà j'ai la procédure suivante, relative à un bouton :

Public Sub cmdOuvrirFichier_Click()

Qu'est-ce que je mets ici, pour ouvrir - et afficher, Application.Path & "/FichTexte.txt" avec gedit ?


End

Désolé d'avoir du mal à suivre...
LanoueC#6 Posté le 18/1/2011 à 17:34:00
Bonsoir

1
'fichier dans ton homeExec ["gedit", User.Home &/ "Fichier_A_Ouvrir"] For Read As "Process"'fichier dans ton projet GambasExec ["gedit", Application.Path &/ " chemin Fichier_A_Ouvrir"] For Read As "Process"'ouvrir un nouveau doc dans une instance de gedit ouverteExec ["gedit", "--new-document"] For Read As "Process"Exec ["gedit --new-document"] For Read As "Process"'ouvrir une nouvelle instance de geditExec ["gedit", "--new-window"] For Read As "Process"'avec shell ca marche aussiShell "gedit " & User.Home &/ "chemin Fichier_A_Ouvrir For Read As "Process"


LanoueC
manu#7 Posté le 18/1/2011 à 18:09:00
Avec Gambas ca roule !Foromus,

Que souhaites tu faire exactement : lire le contenu d'un fichier texte pour voir ce qu'il contiens, éditer un fichier pour le modifier ?

Gambas permet de manipuler les fichiers texte sans problème alors pourquoi passer par gedit ? tu as ici quelques exemples de ce que tu peux faire : http://gambaslinux.eg2.fr/articles.php?lng=fr&pg=364

D'autant que si tu souhaites diffuser ton petit programme, tous le monde n'est pas sous Gnome et donc n'a pas forcement Gedit installé par défaut...
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
Foromus#8 Posté le 18/1/2011 à 19:49:00
Bonsoir,

Je viens de faire quelques essais :

Avec :
Exec ["gedit", Application.Path &/ "FichTexte.txt"] For Read As "Process"
ça fonctionne, le fichier est bien ouvert par gedit

Avec :
Shell "gedit" & Application.Path &/ "FichTexte.txt" For Read As "Process"
je n'ai pas de résultat.

Pourtant, j'ai fait bien attention à la syntaxe, c'est aussi une des raisons que je n'arrivais pas à quoi que ce soit dans mes essais précédents. Je pense aussi que je n'ai pas bien su lire les informations dans la page d'aide.

Je vais donc faire avec ce que j'ai, ne vous cassez pas la tête sur ce sujet.

Concrètement, je dirai à Manu que cette demande avait pour but de répondre à une possibilité que je voulais ajouter dans mon application. J'ai quelque part un fichier d'erreurs, erreurs qui sont mémorisées au fur et à mesure lors d'un contrôle, et je voulais ajouter une possibilité de visualisation immédiate, bien que, en l'occurence, une visualisation hors programme est tout à fait suffisante. Effectivment, j'ai vu dans l'aide une possibilité pour afficher les données dans une textarea mais je n'ai pas encore utilisé ce contrôle. J'aurais pu aussi afficher dans une nouvelle fenêtre, (enfin, un nouveau formulaire), mais ces deux possibilités n'ont pas, sur le moment, retenu mon choix. Mais effectivement, tout le monde n'a pas gedit ! Cela dit, et vu mon niveau, je ne fais que des bricoles tout à fait personnelles, et en conséquence, il n'y aura jamais de ma part un souhait, fut-il modeste, de publication ! Vu le niveau de ce qui est déjà proposé et de ce que je fais, je n'ai pas de prétentions.

Bien, et comme j'ai une solution, je vais m'en tenir là, et mettre [Résolu] !

Merci beaucoup à tous pour votre aide !

spheris#9 Posté le 18/1/2011 à 20:26:00
Avec :
Shell "gedit" & Application.Path &/ "FichTexte.txt" For Read As "Process"
je n'ai pas de résultat.


Foromus, au même titre que EXEC, avec SHELL, tu dois mettre entre crochets.
A+
;) ;)
Foromus#10 Posté le 18/1/2011 à 20:39:00
C'est ce que j'avais pensé, j'ai essayé, mais je me suis fait bouter... Probablement une erreur de syntaxe.
Je vais refaire des essais demain. Pour le moment, j'ai aussi essayé avec un pdf, ça fonctionne également (avec EXEC).
LanoueC#11 Posté le 18/1/2011 à 21:08:00
Bonsoir


Shell "gedit" & Application.Path &/ "FichTexte.txt" For Read As "Process"
je n'ai pas de résultat.


regarde bien ton code : tu as oublié un espace après gedit !! il faut :
1
SHELL "gedit " & Application.Path &/ "FichTexte.txt" FOR READ AS "Process"


et cela fonctionne très bien sans les crochets avec Shell

il est vrai que tout le monde n'a pas gedit comme éditeur par défaut ==>
intéressant de voir si on peut lancer à partir de la commande Shell ou EXEC la même commande que à partir d'un terminal pour lancer l'éditeur par défaut avec $EDITOR

pour l'instant je n'ai pas réussi à écrire la bonne syntaxe pour envoyer une variable d'environnement avec Shell ou EXEC

Merci
LanoueC
linuxos#12 Posté le 18/1/2011 à 22:12:00
Un peu de sel, de poivre et la crevette sera... LanoueC,

C'est peut être normal car lorsque tu utilises la commande SHELL, tu invoques en fait un shell unix dans lequel est
executée la commande que tu lui transmets.

Pour savoir si la variable $EDITOR est disponible dans ce shell unix, il suffit de verifier:

1
DIM ResultatCmd AS StringSHELL "env" TO ResultatCmdPRINT ResultatCmd


Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
linuxos#13 Posté le 18/1/2011 à 22:14:00
Un peu de sel, de poivre et la crevette sera... Petite précision sur les commandes SHELL et EXEC:


SHELL invoque un shell Unix pour executer la commande a executer

EXEC execute directement la commande transmit en parametre, donc plus rapide au final

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
LanoueC#14 Posté le 18/1/2011 à 22:20:00
linuxos

oui effectivement avec la commande env:)

j'ai réussi à lancer xterm qui pour moi est une variable d'environnement mais avec ce code :
1
SHELL "$TERM" WITH ["TERM=xterm"] FOR READ AS "Process"


Donc il faut prédéfinir la variable d'environnement dans Gambas!! ??
De même impossible à faire sortir le PATH avec la commande traditionnelle : $PATH

si tu as une idée ?


linuxos#15 Posté le 18/1/2011 à 22:30:00
Un peu de sel, de poivre et la crevette sera... Il faut juste exporter la variable pour l'utiliser.

1
DIM Result AS StringSHELL "export EDITOR=gedit ; env" TO ResultPRINT Result
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
12