Watch
Vai alla navigazione
Vai alla ricerca
Se con OPEN viene specificata la parola chiave WATCH, allora il file viene così visto dall'interprete:
- Se almeno un byte può essere letto dal file, allora l'evento File_Read() viene chiamato;
- Se almeno un byte può essere scritto nel file, allora l'evento File_Write() viene chiamato.
Come esempio mostreremo il caso in cui viene aperto un file-device in lettura (For Read) ed osservato con specificando la parola Watch:
Private varFile As File
Public Sub Form_Open()
varFile = Open "percorso/del/file" For Read Watch
End
Public Sub File_Read()
Dim by As Byte
While Not Eof(varFile) ' Fin tanto che non è giunto alla fine del file...
' ...legge il file e carica un byte nella variabile "by"...
Read #varFile, by
' ...e lo mostra in console:
Print by
Wend
End
Public Sub Button1_Click()
varFile.Close
End
Lettura dei dati contemporaneamente da più file
Per la lettura contemporanea dei dati da più file aperti, sarà necessario coniugare l'apertura e l'osservazione del file tramite Open... For Read Watch con il metodo Object.Attach per gestire l'evento della ricezione dei dati Midi, associando l'oggetto file alla definizione dell'evento:
Private varFile1 As File Private varFile2 As File Public Sub Form_Open() varFile1 = Open "/percorso/del/primo/file" For Read Watch ' Viene associato l'oggetto File alla denominazione del proprio evento: Object.Attach(varFile1, FMain, "eventoMidi1") varFile2 = Open "/percorso/del/secondo/file" For Read Watch ' Viene associato l'oggetto File alla denominazione del proprio evento: Object.Attach(varFile2, FMain, "eventoMidi2") End ' Vengono intercettati i dati provenienti dal primo file: Public Sub eventoMidi1_Read() Dim b1 As Byte Read #varFile, b1 Print b1 End ' Vengono intercettati i dati provenienti dal secondo file: Public Sub eventoMidi2_Read() Dim b2 As Byte Read #varFile2, b2 Print b2 End
oppure in modo analogo mediante Observer:
Private varFile1 As File Private varFile2 As File Public Sub Form_Open() Dim oss1 As Observer Dim oss2 As Observer varFile1 = Open "/percorso/del/primo/file" For Read Watch ' Viene "osservato" l'oggetto File per l'evento: oss1 = New Observer(varFile1) As "eventoMidi1" varFile2 = Open "/percorso/del/secondo/file" For Read Watch ' Viene "osservato" l'oggetto File per l'evento: oss2 = New Observer(varFile2) As "eventoMidi2" End ' Vengono intercettati i dati provenienti dal primo file: Public Sub eventoMidi1_Read() Dim b1 As Byte Read #varFile1, b1 Print b1 End ' Vengono intercettati i dati provenienti dal secondo file: Public Sub eventoMidi2_Read() Dim b2 As Byte Read #varFile2, b2 Print b2 End