Ricevere dati da un programma esterno mediante un file

Da Gambas-it.org - Wikipedia.

Un programma Gambas può comunicare e ricevere dati da un altro programma, scritto in Gambas o in altro linguaggio, usando in comune un file.
In particolare consideriamo qui il caso in cui il programma esterno scrive dei dati nel file e il nostro programma Gambas va a leggere il file subito dopo, per raccogliere e utilizzare quei dati.


Esempio di comunicazione fra due programmi

Mostriamo un esempio pratico, nel quale anche il programma esterno è scritto in Gambas. Esso creerà il file in comune e vi scriverà dei dati, in questo caso l'orario ogni secondo. Il nostro programma Gambas leggerà il file in comune e raccoglierà i dati appena scritti.

Public Sub Form_Open()

 Dim fl As File

 fl = Open "/tmp/file_in_comune" For Write Create 

 Do
   Write #fl, Str(Time)
   Wait 1
 Loop

End

Il nostro programma Gambas, invece, aprirà il file in comune e lo porrà sotto osservazione con la parola-chieve "WATCH". Potrà così leggere nel file ogni qual volta viene scritto qualcosa (in questo esempio l'orario):

Private fl As File


Public Sub Form_Open()

 fl = Open "/tmp/file_in_comune" For Read Watch 

End


Public Sub File_Read()

 Dim s As String

 Read #fl, s, 8
 Print s

End

Se il programma esterno, scritto in altro linguaggio, utilizzerà un file - sia pur un file-device - leggibile dal nostro programma Gambas, il codice i quest'ultimo sostanzialmente non cambia.


Usare un percorso temporaneo per il file in comune

Anziché creare un file in una qualsiasi cartella, si potrà utilizzare, come file in comune, un file temporaneo il cui percorso sia individuato dall'istruzione TEMP.
Al codice del programma esterno le seguenti modifiche:

 ......

 Dim s As String

 s = Temp

' Scrive nel Terminale il percorso e il nome del file temporaneo in comune da creare, affinché sia utilizzato nel nostro programma Gambas:
 Print s

' Crea e apre in "Scrittura" il file temporaneo in comune:
 fl = Open s For Write Create

 ......

Mentre al nostro programma Gambas saranno apportate le seguenti modifiche:

 ......

' Resta in attesa sino a quando sarà immesso il percorso e il nome del file temporaneo in comune creato da leggere:
 fl = Open InputBox("Immettere il percorso e il nome del file temporaneo...") For Read Watch

 ......