Gambas France BETA


Pas de compte ? Incription

[Résolu] Fermer un flux / close stream

1
AuteurMessages
Philippe734#1 Posté le 27/5/2016 à 22:56:51
Bonjour,

Je souhaite fermer un flux, et non pas un fichier.

Contexte :

J'ai créé un flux avec un shell qui surveille le changement d'état d'un truc système :
1
SHELL "bla bla ma ligne de commande" FOR READ AS "procTruc"


Je récupère ensuite les événements avec SUB procTruc_Read(), me permettant de capturer les données lorsque le truc système change d'état. Tout fonctionne. Mais comme ce shell surveille un changement d'état, alors je dois le stopper afin de terminer mon programme gambas. Si le lance mon script dans le terminal, je faisais un control+C pour le stopper. Dans la documentation gambas, la méthode Close est censé fermer un flux. Mais je ne réussis pas à l'utiliser, mes tentatives ne fonctionnes pas. Je dois terminer ce flux, sinon mon programme gambas ne se termine pas en faisant FMain.close

voici les tentatives que j'ai essayé sans succès, pour fermer mon flux :
1
2
3
4
5
Result = CLOSE "procTruc"
Result = CLOSE #"procTruc"
CLOSE "procTruc"
CLOSE #"procTruc"
Process.Close


Pourriez-vous s'il vous plait m'aider à fermer un flux à partir de son nom en string, merci !
vuott#2 Posté le 27/5/2016 à 23:33:10
Ne cedere ineluctabili possimusTu dois utiliser une variable de type "process".

Exemplum:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
PRIVATE pr AS Process


PUBLIC SUB Form_Open()

pr = SHELL "............" FOR READ AS "procTruc"

END

PUBLIC SUB Button1_Click()

pr.Close

END


PUBLIC SUB proTruc_Read()

........etc

END
« Vita non suavis esse potest, nec Mors amara. »
Philippe734#3 Posté le 27/5/2016 à 23:47:28
Merci !

La honte sur moi, c'était écrit dans la doc, mais j'avais occulté le premier mot : [process =]...

Du coup, pr.Close n'a pas fonctionné. Mais en ajoutant pr.Kill c'est bon :
1
2
3
4
5
6
7
8
9
PUBLIC SUB cmdQuit_Click()

FLUSH
pr.Close
pr.Kill

FMain.Close

END

1