Ricevere dati da un programma esterno mediante un file
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 ......